r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!Cheyenne] Discussions about the Cheyenne Web Server

Graham
25-Dec-2009
[6762x3]
Not using the default config .. but I get this

26/12-10:17:23.838-[RSP] ##RSP Script Error: 

	URL  = /ws.rsp
	File = www/ws.rsp

	** Script Error : Invalid path value: data 
	** Where: rsp-script 
	** Near:  [prin request/content/data] 


Request  = make object! [

    headers: [Host "localhost:8000" Connection "keep-alive" User-Agent 
    {Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 
    (KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5} Accept {application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5} 
    Accept-Encoding "gzip,deflate" Accept-Language "en-GB,en-US;q=0.8,en;q=0.6" 
    Accept-Charset "ISO-8859-1,utf-8;q=0.7,*;q=0.3"]
    status-line: #{474554202F77732E72737020485454502F312E310D0A}
    method: 'GET
    url: "/ws.rsp"
    content: none
    path: "/"
    target: "ws.rsp"
    arg: none
    ext: '.rsp
    version: none
    file: %www/ws.rsp
    script-name: none
    ws?: none
]
listening on port 8000
I'll download a fresh svn ..
Terry
25-Dec-2009
[6765]
The only problem with eating your own dog food is sometimes it  just 
doesn't taste that good.. like when it processes html
Here's the pastebin code for the eval demo above
http://pastebin.com/d1cfec7dc
Graham
25-Dec-2009
[6766]
Very odd .. downloaded fresh checkout.  There's no listen in the 
httpd.cfg but it starts up listening at 8000 and not 80.
Pekr
25-Dec-2009
[6767]
I think it might be somewhere in Uniserve's config ...
Graham
25-Dec-2009
[6768]
And if i browse to http://localhost:8000/ws.html .. I see the web 
socket test page, and I get a Chrome alert saying that Conn closed.
Dockimbel
25-Dec-2009
[6769]
Graham: how do you start Cheyenne?
Graham
25-Dec-2009
[6770x3]
I don't think we can listen at 80 anyway on Windows 7
do %cheyenne.r
we can't listen ..
Dockimbel
25-Dec-2009
[6773]
Even if you use "Run as administrator" on REBOL binary?
Graham
25-Dec-2009
[6774]
I created a listen on 8010
and still same error
Dockimbel
25-Dec-2009
[6775x2]
If you're not running on port 80, you need to add the port number 
to the ws:// URL in ws.html. Tested here, it fixes the "conn closed" 
issue.
var conn = new WebSocket("ws://localhost:8000/ws.rsp")
Graham
25-Dec-2009
[6777x2]
oh ...
makes sense
Dockimbel
25-Dec-2009
[6779]
Terry: after taking the time to think about your comments regarding 
how web sockets should be integrated in UniServe & task-master, it 
starts to make sense and it inspires me on how it could be done and 
how the framework could look like. I'm writing a few specs on paper 
and will maybe implement a prototype tomorrow. This web sockets stuff 
is really going to be exiting after all. ;-)
Terry
25-Dec-2009
[6780x3]
Yay!
I was looking at my old experiments.. and they date back to the pre 
Cheyenne, Uniserve days.

I simply created a traditional tcp socket to handle the tcp stuff, 
and Uniserve's http.r prot for http.
<snip>

EOM: "\n"
; prints messages to console.
verbose: false
; opens port
io-port: open/no-wait tcp://:7001
clients: []
; numbers of clients
nc: 0
; max clients limit
mc: 50

..... 

forever [


;Events are periodical functions.. checking if a website is still 
up etc. Add a wait state to prevent excessive CPU usage
;wait .02 
;if not empty? %events.txt [do load %events.txt]

either none? (wait [ .01 io-port])
            [ clients: head clients ] [
		
            print "a user is connecting"
            either ( nc < mc ) [
            append clients make object! [
                        port: first io-port
                            ]
            nc: nc + 1
            respond rejoin ["Connected to ROCKSTaR" EOM ]

... 

etc
Dockimbel
25-Dec-2009
[6783]
My goal is to be able to write the server side of a web app like 
this one (2k concurrent users on average)  http://www.onlinegames.com/basketball/
using Cheyenne & a web sockets framework with minimal efforts and 
good scalability.
Terry
25-Dec-2009
[6784x3]
Yeah, was playing that.. I suck.
On the design side, a packet-oriented protocol not sending packet 
length (for text frames), rather relying on begin/end markers, is 
a surprizing choice to me.
 

I think this is pretty much standard.. 
From an Xml sockets in Flash article


send() - This method allows you to send a string of characters through 
the socket connection. While the string is usually in XML format 
it does not have to be. This string can either be constructed using 
the XML object within Flash, or manually if size permits. Flash will 
also automatically append the terminating null character for you.
Im guessing null with websockets as 0xFF ?
Janko
25-Dec-2009
[6787]
uh , I just wrote a long reply here but it got eaten by the altme... 
in short:


I was away for few days. Thanks a lot for all the comments and good 
info above!! Doc solved the problem also!


About websocket.. wow wow wowoww!!! this will be very very cool to 
have!! I have made chat via chat server -> flash -> js before and 
COMET is a total mess and hack on the client side (it's a miracle 
they made it work, so many tricks in there to work)
Kaj
25-Dec-2009
[6788x3]
The problem with markers is that you can't have the marker appearing 
in the data, so you have to check all data for it and escape it when 
found
It's much more efficient when you can tell the size of the data in 
advance
But indeed this seems to be lost on Internet protocols
Graham
25-Dec-2009
[6791]
http uses data size
Terry
26-Dec-2009
[6792x2]
Jetty jumps on the websocket bandwagon

http://ajaxian.com/archives/jetty-introduces-websocket-support-relunctantly
Cheyenne as a "Kaazing Killer" makes it to #3 on Google :)
Dockimbel
26-Dec-2009
[6794x2]
Hehe :-)
Looks like I'm not the only one ranting about web sockets protocol 
specifications : http://blogs.webtide.com/gregw/entry/how_to_improve_websocket
amacleod
27-Dec-2009
[6796]
To get the websocket demo  working am I accessing "ws://localhost/ws.html"?


Using http:// does not work but ws:// redirects me to google search 
of url


I'm using the latest svn version...starting from icon...using chrome 
4
Graham
27-Dec-2009
[6797x3]
If Chyenne is running on port 80, then 

http://localhost/ws.html

and you should see a javascript button
If you're not running on port 80, then you need to modify the ws.html 
file and add the port number in the ws://localhost part ...
Anyone got an example of how to connect to the web socket from a 
rebol client?
Kaj
27-Dec-2009
[6800]
You'd need to implement the client side protocol in REBOL
amacleod
27-Dec-2009
[6801]
I'm on port 80 ...


I see the button and get the hello world message popup as well as 
a "comm opened" popup at start...


I was trying to get Terry's demo to work but his "Drag this" does 
not seem to do anything...

Anyone try out Terry's?

Also could not get  ws.rsp to work..."page cannot be displayed"
Dockimbel
27-Dec-2009
[6802]
ws.rsp script is supposed to be accessed only through web sockets 
: ws://localhost/ws.rsp
amacleod
27-Dec-2009
[6803]
I get redirected to google search with > ws://localhost/ws.rsp
Dockimbel
27-Dec-2009
[6804x2]
This URL is not be typed in your browser address, it's for the web 
socket object creation in javascript. Please, have a look in %www/ws.html.
browser address <field>
amacleod
27-Dec-2009
[6806]
doh...thanks will have a look.
Terry
27-Dec-2009
[6807x2]
With my demo, when you click the "Make draggable" button, it sends 
a message to Cheyenne via the websocket.. the response is some JS 
that makes the box draggable.
Doc.. any more thoughts on the ws:// protocol system? As it sits 
now, it's a glorified AJAX call.
Kaj
27-Dec-2009
[6809]
It keeps the connection open, doesn't it?
Terry
27-Dec-2009
[6810]
the connection is open, but RSP is stateless
Kaj
27-Dec-2009
[6811]
Hm, yes, as Doc said, the server model needs to change