我有一个 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(Node)。无法让 Websocket 传输工作并且它退回到 xhr 轮询 on JS. Python获取502握手时.
- 代理通过STunnel(对于 HTTPS) -> HAProxy(Websocket Proxy) -> Node(SocketIO) - 这也不起作用。 Python 客户端在握手时仍然收到 502。
- 通过 Stunnel(HTTPS) -> Node(SocketIO) 进行代理 - 这也不起作用。不确定 STunnel 是否支持 websocket 代理
-
节点 http 代理:投掷 500(发生错误:{"code":"ECONNRESET"}) 在 websocket 上并回退到 xhr-polling
我确信这是一个常见的用例,并且存在解决方案。非常感谢任何帮助。
提前致谢!
我的情况看来是个罕见的案例。我在基于 Amazon Linux 的 EC2 实例上构建了整个环境。由于几乎所有 yum 软件包都不是最新的,我必须从源代码安装几乎所有 yum 软件包。通过这样做,我可能会错过未更改/添加的配置。或者 HAProxy 所需的库可能不是最新的。
无论如何,我尝试在基于 ubuntu 12.04 的 EC2 实例上再次构建环境。通过一些配置调整,HAProxy 的工作就像一个魅力。我现在可以通过 SSL 从 JS、Python 和 PHP 连接我的 SocketIO 服务器,没有任何问题。我还可以创建一个侦听 443 并将其代理到非标准端口 (8xxx) 的安全 TCP Amazon ELB。
如果其他人遇到类似问题,请告诉我,我将很乐意提供帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)