Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NodeJS-socketiooverssl与websocket传输_Python_Node.js_Ssl_Websocket_Socket.io - Fatal编程技术网

Python NodeJS-socketiooverssl与websocket传输

Python NodeJS-socketiooverssl与websocket传输,python,node.js,ssl,websocket,socket.io,Python,Node.js,Ssl,Websocket,Socket.io,我有一个NodeJS-socketIO服务器,它的客户端可以监听JS、PHP和Python。当通信发生在普通HTTP/WS通道上时,它就像一个魔咒 现在,当我尝试保护此通信时,websocket传输不再工作。它退回到xhr轮询(长轮询)传输。Xhr轮询仍然适用于JS客户端,但不适用于纯粹依赖于套接字传输的python 我尝试过的事情: 在节点上,使用https(带有商业证书)而不是http-适用于通过节点提供页面服务,但不适用于socketIO 通过HAProxy(1.15-dev19)代理。从

我有一个NodeJS-socketIO服务器,它的客户端可以监听JS、PHP和Python。当通信发生在普通HTTP/WS通道上时,它就像一个魔咒

现在,当我尝试保护此通信时,websocket传输不再工作。它退回到xhr轮询(长轮询)传输。Xhr轮询仍然适用于JS客户端,但不适用于纯粹依赖于套接字传输的python

我尝试过的事情:

  • 在节点上,使用https(带有商业证书)而不是http-适用于通过节点提供页面服务,但不适用于socketIO
  • 通过HAProxy(1.15-dev19)代理。从HTTPS(HAProxy)到HTTP(Node)。无法使Websocket传输正常工作,它将返回到JS上的xhr轮询Python在握手时获得502
  • 通过STunnel代理(对于HTTPS)->HAProxy(Websocket代理)->节点(SocketIO)-这也不起作用。Python客户端在握手时仍然得到502
  • 通过Stunnel(HTTPS)->Node(SocketIO)代理-这也不起作用。不确定STunnel是否支持websocket代理
  • 节点http代理:在websocket上抛出500(发生错误:{“代码”:“EconReset”}),并返回xhr轮询
  • 我确信这是一个常见的用例,并且存在一个解决方案。非常感谢您的帮助


    提前谢谢

    我的情况似乎很少见。我在基于AmazonLinux的EC2实例上构建了整个环境。由于几乎所有的yum软件包都不是最新的,我不得不从源代码处安装几乎所有的yum软件包。如果这样做,我可能会错过未更改/添加的配置。或者HAProxy所需的lib可能不是最新的

    无论如何,我尝试在基于Ubuntu12.04的EC2实例上再次构建环境。HAProxy在配置上做了一些调整,工作起来很有魅力。现在,我可以通过SSL从JS、Python和PHP连接我的SocketIO服务器,没有任何问题。我还可以创建一个安全的TCP Amazon ELB,监听443并将其代理到非标准端口(8xxx)


    如果其他人遇到类似问题,请告诉我,我将乐于帮助

    你能分享你的HAProxy配置吗?您是否在HA代理之上使用nginx?如果是,您如何确保nginx的流量。@RanaDeep很抱歉这么晚才回复。不,我没有在HAProxy中使用Nginx。如果您仍然需要配置,我们将尝试使用socketIO客户端从python客户端连接node.js服务器和socket.io,但没有成功。您能分享一些连接中的代码片段吗?如果您使用的是SocketIO 1.x,python客户端将无法工作。尝试在python客户机上使用SocketIO 0.9,如果仍然不起作用,请告诉我。python客户端socketIO client的作者正在进行更新,以使其与1.x版本相匹配。谢谢。这真的是我的问题。