这可能吗?我们可以访问底层套接字吗?系统为给定请求提供响应。我希望能够在80端口上通过http协议支持全双工通信。
是否有一种方法可以为当前请求获取已建立的套接字,并将其保留为全双工通信?
我的使用案例是web sockets。一个web套接字的握手实际上是一个有效的http请求,我想重用我的web服务器来升级它。另一个端口可能没有在客户端机器上打开,所以端口80是至关重要的。
欢迎任何替代方案。
如果您无法访问底层套接字。你可以处理http请求并从片段(从片段缓存、内存或文件)中构建响应。如果您需要完全控制所使用的套接字(以http请求开始),请在不支持"secret-websocket-handshake"之后将其升级为websocket套接字。
你能做的是:使用火箭式的全双工系统。客户端发送请求使用HTTP 1.1保持活套接字,当HTTP。当服务器接收到这些请求时,您可以延迟响应,直到服务器端触发的数据可用或超时发生。它不如websocket健壮,但性能相当好,只增加了一到两毫秒的服务器响应时间(至少在我的测试中)。唯一的问题是,当有人在浏览器中向服务器打开多个页面时,浏览器开始让页面共享单个http请求。为此,我们将最大轮询保持在尽可能低的水平,从而产生更多的web流量。
另一个选择是在"socket-code"中自己做websocket,使用"http.sys-code"来处理http请求。这也可以很好地工作,但使代码更加复杂。