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

标签 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 轮询以及我可以尝试什么的任何想法?

谢谢

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

最佳答案

我还没有弄清楚为什么它会切换到 XHR 轮询,但出于我只想让 websocket 服务器在端口 80 上工作的目的,我解决问题的方法是使用 node-http-proxy 包 https://github.com/nodejitsu/node-http-proxy

我保持代码不变,但让代理监听端口 80,并将其路由到我的 websocket 监听的端口 3000。

关于node.js - 将 socket.io 切换到端口 80 导致传输切换到 xhr 轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843133/

相关文章:

node.js - EmberJS 全局 websocket 连接

javascript - 如何设置最大值socket io 的客户端?

javascript - 单击复选框时无法发出事件。 (socket.io)

html - 如何使用 nodejs 将变量从一个页面传递到另一个页面(传递给 1 个特定用户)?

javascript - 如何通过管道将代码和单元测试传递给 npm test?

node.js - RabbitMQ 和 Node.js 如何处理故障转移场景?

node.js - 在 Node.js 中处理之前等待文件完成写入磁盘

javascript - 如何将 Vue.js 与来自 CMS 的服务器端渲染内容结合起来?

node.js - 快速路由共享变量

node.js - 在收到握手响应之前关闭具有快速返回连接的 Node js