我有一个 NodeJS-socketIO 服务器,它有客户端监听 JS、PHP 和 Python。当通信发生在普通的 HTTP/WS 通道上时,它就像一个魅力。
现在,当我尝试保护这种通信时,websocket 传输不再工作。它回退到 xhr-polling(长轮询)传输。Xhr-polling 仍然适用于 JS 客户端,但不适用于纯粹依赖于套接字传输的 python。
我尝试过的事情:
- 在节点上,使用https(带有商业证书)而不是 http - 适用于通过 Node 提供页面,但不适用于 socketIO
- 通过HAProxy (1.15-dev19)代理。从 HTTPS(HAProxy)到 HTTP(节点)。无法让 Websocket 传输正常工作,它回退到 JS 上的 xhr-polling。Python在握手时得到502。
- 通过STunnel代理(用于 HTTPS)-> HAProxy(Websocket 代理)-> Node(SocketIO)- 这也不起作用。Python 客户端在握手时仍然得到 502。
- 通过 Stunnel(HTTPS) -> Node(SocketIO) 代理 - 这也不起作用。不确定 STunnel 是否支持 websocket 代理
- node-http-proxy:在 websocket 上抛出 500(发生错误:{"code":"ECONNRESET"})并回退到 xhr-polling
我确定它是一个常见的用例,并且存在解决方案。非常感谢任何帮助。
提前致谢!