【发布时间】:2013-08-19 22:04:56
【问题描述】:
我有一个 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
我确定这是一个常见的用例,并且存在解决方案。非常感谢任何帮助。
提前致谢!
【问题讨论】:
-
我们正在尝试使用 socketIO-client 从 python 客户端将 node.js 服务器与 socket.io 连接,但没有成功。你能分享一些连接中的代码sn-ps吗?
-
如果您使用的是 SocketIO 1.x,python 客户端将无法工作。尝试将 SocketIO 0.9 与 python 客户端一起使用,如果它仍然不起作用,请告诉我。 python客户端socketIO-client的作者正在努力更新以匹配1.x版本。
-
谢谢。这真的是我的问题。
标签: python node.js ssl websocket socket.io