Node.js中的Socket.IO在3G移动网络上无法运行

4

在3G移动网络上,node.js中的socket.io无法正常工作。

我已经尝试了以下几个方法:

 io.set("transports", ["xhr-polling"]);
 io.set('browser client minification', true);
 io.set('browser client etag', true);

除了心跳,socket.io 是否记录其他内容?握手呢? - Gntem
2个回答

3

移动网络为了节省流量通常会对数据进行压缩和转换,以及使用代理服务器来处理数据,这些过程很容易出现与规范不符的情况。

特别是在 WebSocket 连接中经常会出现连接失败的情况。只开启 AJAX 传输是正确的做法。如果仍然无法连接,那么你没有太多办法来解决这个问题。

你可以尝试将 Socket.IO 服务器运行在非 80 端口上。至少在我的 Sprint 连接上,我可以在 3000 端口上运行纯 WebSocket,但在 80 端口上却无法连接。


1

尝试从您的代码中删除此内容:

io.set("transports", ["xhr-polling"]);

因为socket.io会在最终放弃之前尝试所有可用的传输方式。然而,您只启用了一种传输方式,这可能会导致错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接