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 广播不适用于 React

Socket.io 适用于 localhost 但不适用于 Heroku 服务器

Node.js 和 Socket.io 创建房间

Nginx + Node.js + Socket.io + SSL 可能吗?

express,用于浏览器客户端和 node.js 客户端的 socket.io 服务器

Node.js 和 socket.io 用于通知栏:我走对了吗?