views:

196

answers:

2

Hello,

I'm looking for resources about interaction between client side web socket, web server and real application backend that works behind CGI, FastCGI or SCGI protocols.

It seems that this is impossible at this point as:

Request length is specifically defined in CONTENT_LENGTH variable so I can't expect that the data would continue to come from web server from stdin, or may I? as unset CONTENT_LEGTH defines no-request body.

Application require to read CONTENT_LEGTH bytes of date no-more and if less are read then it is considered as disconnected client.

  • Are there any resources on how (F|C)CGI is updated or can be used with WebSockets?
  • Are there any drafts of SCGI/FCGI/CGI specks for WebSockets support?
  • Are there any known web servers that support WebSockets?
  • If so, do they support *CGI protocols for them?
  • Have you had any experience with working with WebSockets and *CGI?

Thank you, all information would be appropriate.

Artyom

Anybody?

A: 

The WebSocket API Editor's Draft 15 June 2010

Latest Published Version: http://www.w3.org/TR/websockets/ Latest Editor's Draft: http://dev.w3.org/html5/websockets/ Previous Versions: http://www.w3.org/TR/2009/WD-websockets-20090423/ http://www.w3.org/TR/2009/WD-websockets-20091029/ Editors: Ian Hickson, Google, Inc.

sagar
How exactly this answers my question? I know how to find the drafts, what is interesting me is how CGI/FastCGI/SCGI should interact with web sockets.
Artyom
A: 

You can find a mod_websocket module for lighttpd here. When building the module, be sure to specify the correct websocket protocol version you want to use (version -75 or -76). Starting with WebKit nightly build r59903 and Chrome 6.0.414.0 (r47952) only protocol version -76 is supported.

Note that with using WebSockets, you no longer need CGI, FastCGI or SCGI protocols for connecting the web server with the application back end. Just implement a TCP listener in your application (for mod_websocket to connect to) and use the socket for asynchronous I/O.

raffel
Interesting, but from what I can see it does not pass any HTTP Headers data like cookies etc to backend. So how should I manage sessions? I need to send such data explicitly instead of getting it from the web server.
Artyom
Your websocket connections are created in the context of your HTTP session, you don't have to care about that. Beside that, HTTP and websocket are of course completely different protocols, so in your websocket connection you don't have access to HTTP headers.Keep in mind that the websocket protocol only provides a minimal framing on top of TCP, so any application-specific data exchange between the application backend and the web client on top of a websocket connection you have to define and implement by yourself, just as you would do it using regular sockets.
raffel
Just for the record, AFAIK HTTP Headers are required fro several reasons: Know session data, know the URL is accessed, know the IP of remote host etc, etc, etc. So websocket is far from being just a socket.
Artyom
Uh.. after the websocket handshake is done, it is really very much like regular sockets. Even Joe Armstrong (of Erlang fame) says so :) http://armstrongonsoftware.blogspot.com/2009/12/comet-is-dead-long-live-websockets.html
raffel