WebSocket and CGI/FastCGI/SCGI protocols

Artyom picture Artyom · Jul 11, 2010 · Viewed 7k times · Source

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?

Answer

raffel picture raffel · Jul 28, 2010

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.