【问题标题】:How can I disable five connections limit on socket.io?如何禁用 socket.io 上的五个连接限制?
【发布时间】:2013-10-12 23:45:54
【问题描述】:

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

同样的问题

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

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

【问题讨论】:

  • 我还是遇到了这个问题:(

标签: node.js socket.io


【解决方案1】:

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

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

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

P/s:对不起我的英语不好

【讨论】:

    【解决方案2】:

    您自己提供了解决方案-您链接的错误票证末尾有解决方案的链接,基本上是添加以下内容:

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

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

    【讨论】:

    • 这不起作用。仍然有 5 个连接限制。因为 socket.io 没有做 http 请求。
    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2018-07-26
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多