WebSocket和CGI/FastCGI/SCGI协议

Art*_*yom 11 cgi fastcgi comet scgi websocket

我正在寻找有关客户端Web套接字,Web服务器和实际应用程序后端之间交互的资源,这些后端在CGI,FastCGI或SCGI协议之后工作.

在这一点上,这似乎是不可能的:

请求长度是在CONTENT_LENGTH变量中明确定义的,所以我不能指望数据会继续来自stdin的Web服务器,或者我可以吗?as unset CONTENT_LEGTH定义no-request body.

应用程序需要读取CONTENT_LEGTH更多的日期字节,如果读取的更少,则将其视为断开连接的客户端.

  • 是否有关于如何(F | C)CGI更新或可以与WebSockets一起使用的资源?
  • 是否有支持WebSockets的SCGI/FCGI/CGI斑点草稿?
  • 是否有任何已知的Web服务器支持WebSockets?
  • 如果是这样,他们是否支持*CGI协议?
  • 您是否有使用WebSockets和*CGI的经验?

谢谢,所有信息都是合适的.

阿尔乔姆

任何人?

raf*_*fel 5

您可以在此处找到 lighttpd 的 mod_websocket 模块。构建模块时,请务必指定要使用的正确的 websocket 协议版本(版本 -75 或 -76)。从 WebKit nightly build r59903 和 Chrome 6.0.414.0 (r47952) 开始,仅支持协议版本 -76。

请注意,使用 WebSockets,您不再需要 CGI、FastCGI 或 SCGI 协议来连接 Web 服务器与应用程序后端。只需在应用程序中实现一个 TCP 侦听器(供 mod_websocket 连接)并使用套接字进行异步 I/O。

  • 仅供记录,AFAIK HTTP 标头出于以下几个原因需要:了解会话数据、了解访问的 URL、了解远程主机的 IP 等等。因此,websocket 远不只是一个套接字。 (4认同)
  • 握手之后,是的。但握手本身是一个有效的 HTTP 请求,并且应该不受干扰地到达 WebSocket 服务器。RFC 6455[链接](https://tools.ietf.org/html/rfc6455#section-3) 表示客户端可以发送其他标头,例如 cookie 或与身份验证相关的标头。不过你是对的,使用 WebSocket 时不需要 SCGI 或 FCGI,你应该只在应用程序中使用 WebSocket。如果有东西充当中间的代理,则取决于代理如何转发原始客户端地址。它可能存储在“X-Forwarded-For”标头中。 (4认同)