如何在socket.io上禁用五个连接限制?

时间:2013-10-12 23:45:54

标签: node.js socket.io

我在聊天系统上使用socket.io和xhr轮询。我不想使用websocket,因为不能在所有用户上工作。但是当我使用xhr轮询时,如果用户在浏览器上打开5个选项卡,消息会变慢

这里的问题相同

https://github.com/LearnBoost/socket.io/issues/1145

我测试了它但没有工作。还有5个连接限制。如何禁用此限制?

2 个答案:

答案 0 :(得分:1)

我很晚才遇到这个问题,但似乎您已达到浏览器的连接限制。默认情况下,浏览器对主机的连接数量有限制:端口可以一次打开(例如Chrome允许8个)

因此,对于您的socket.io情况,当您向同一个域打开5个选项卡时,这意味着您已使用浏览器允许的5个连接。对于普通网站,这不是问题,因为您请求并接收响应,然后关闭连接。但对于socket.io(和相关库),连接始终保持打开状态以接收“服务器推送”数据。我可能错了,但至少这是我的项目的问题(我不使用Socket.IO而是类似的库)

解决方案是限制应用程序中的socket.io连接数,以便始终只有1个连接。其余的通信应该通过交叉表(跨窗口)事件(例如通过LocalStorage)完成。结果是你有1个选项卡(窗口)保存真正的socket.io连接并广播事件(从socket.io接收)到其他选项卡(窗口)。当然,在实际实施时还需要考虑许多其他因素

P / s:我很抱歉我的英语不好

答案 1 :(得分:0)

您自己提供了解决方案 - 您链接的错误凭证最后有一个解决方案的链接,基本上是添加这个:

var http = require('http');
http.globalAgent.maxSockets = 100;
http.Agent.maxSockets = 100;

或者你想要的任何最大值。