node.js 中的 socket.io 不适用于 3G 移动网络
Posted
技术标签:
【中文标题】node.js 中的 socket.io 不适用于 3G 移动网络【英文标题】:socket.io in node.js is not working on 3G mobile network 【发布时间】:2014-04-25 22:50:24 【问题描述】:。
我已经尝试过这些方法:
io.set("transports", ["xhr-polling"]);
io.set('browser client minification', true);
io.set('browser client etag', true);
【问题讨论】:
除了心跳之外,socket.io 是否记录任何内容,握手呢? 【参考方案1】:移动网络会做各种各样的事情来破坏数据。在此过程中经常会看到激进的代理服务器、数据的压缩和转换以及对规范的不良遵守。
我特别注意到 WebSockets 连接经常失败。通过仅启用 AJAX 传输,您正在做正确的事情。如果失败了,那么您就无能为力了。
您可以尝试在 80 以外的端口上运行 Socket.IO 服务器。至少使用我的 Sprint 连接,我可以在端口 3000 上运行纯 websocket,但在端口 80 上会失败。
【讨论】:
【参考方案2】:尝试从您的代码中删除它:
io.set("transports", ["xhr-polling"]);
因为 socket.io 在最终放弃之前会尝试所有可用的传输。但是,您只启用了一种可能导致错误的传输
【讨论】:
以上是关于node.js 中的 socket.io 不适用于 3G 移动网络的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io 适用于 localhost 但不适用于 Heroku 服务器
Nginx + Node.js + Socket.io + SSL 可能吗?