node.js中的socket.io无法在3G移动网络上运行。
我已经尝试过这些东西了:
io.set("transports", ["xhr-polling"]);
io.set('browser client minification', true);
io.set('browser client etag', true);
答案 0 :(得分:3)
移动网络会做各种事情来破坏数据。在这种情况下,看到积极的代理服务器,压缩和数据转换以及对规范的不良遵守情况是很常见的。
我特别注意到WebSockets连接经常失败。只通过启用AJAX传输,您正在做正确的事情。如果失败,您无法解决问题。
您可以尝试在80以外的端口上运行Socket.IO服务器。至少在我的Sprint连接上,我可以在端口3000上运行纯websockets,但它在端口80上失败。
答案 1 :(得分:1)
尝试从代码中删除它:
io.set("transports", ["xhr-polling"]);
因为socket.io在最终放弃之前会尝试所有可用的传输。但是,您只启用了一个可能导致错误的传输