将socket.io切换到端口80,导致传输切换到xhr轮询

时间:2012-06-01 00:54:36

标签: node.js socket.io

我在端口3000上运行的socket.io服务器运行完美。所有socket.emit和其他操作都通过websocket连接工作。

但是,一旦我尝试在端口80上运行服务器,请更改

app.listen(3000) to app.listen(80)

并进行了所有必要的客户端更改,socket.io停止使用websocket并切换到xhr轮询

warn  - websocket connection invalid
info  - transport end
debug - set close timeout for client 1830609591747620770
debug - cleared close timeout for client 1830609591747620770
debug - cleared heartbeat interval for client 1830609591747620770
debug - setting request GET /socket.io/1/websocket/1830609591747620770
debug - set heartbeat interval for client 1830609591747620770
warn  - websocket connection invalid
info  - transport end
debug - set close timeout for client 1830609591747620770
debug - cleared close timeout for client 1830609591747620770
debug - cleared heartbeat interval for client 1830609591747620770
debug - setting request GET /socket.io/1/xhr-polling/1830609591747620770?t=1338511205390
debug - setting poll timeout
debug - client authorized for 
debug - clearing poll timeout
debug - xhr-polling writing 1::
debug - set close timeout for client 1830609591747620770
debug - setting request GET /socket.io/1/xhr-polling/1830609591747620770?t=1338511205500
debug - setting poll timeout
debug - discarding transport

有关为什么切换到xhr轮询以及我可以尝试的任何想法?

由于

编辑::我是否也在运行快速Web服务器和Web套接字服务器这一事实?因为在我的代码中,我已经启动并运行。如果这导致问题,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

我还没弄清楚为什么它会切换到XHR轮询,但出于我的目的只想让websocket服务器在端口80上工作,我如何解决我的问题是使用node-http-proxy包{{3} }

我保持我的代码相同,但让代理侦听端口80,并将其路由到我的websocket正在侦听的端口3000。

答案 1 :(得分:0)

警告'websocket connection invalid'似乎表明端口80上的防火墙/防病毒安全阻止Web套接字存在问题。有关此类问题的完整列表,请检查Socket.io and firewall software

使用http://websocketstest.com/上的测试/诊断页面查看您的网络兼容性。

希望这有帮助。