使用xhr轮询时如何解决Chrome的6连接限制

时间:2015-09-21 14:33:32

标签: google-chrome websocket socket.io xmlhttprequest

我最近发现Chrome似乎连接限制为6(Chrome hangs after certain amount of data transfered - waiting for available socket),遗憾的是,在加载太多标签后,我发现了“等待可用套接字”消息的困难。 )。

我知道这是Chrome,因为另一个Chrome用户(另一个浏览器会话)同时在同一台计算机上完全加载网页(我的计算机上有多个Chrome用户打开)。所以它不是服务器。

我相信这是因为,在socket.io(我用于通知)中,我是xhr-polling,这导致Chrome必须等到它可以从其中一个连接中获取套接字才能处理页面。

这是什么解决方案?

我想到了几个解决方案:

  • 使xhr-polling窗口变小,这会增加浏览器和node.js中的连接,但这意味着页面不会停止。
  • 使用websockets。我不确定websockets是否也能解决这个问题。
  • 在未关注的标签上使连接处于非活动状态。虽然似乎其他网站不必这样做......
  • 使用某种连接共享。考虑到Chrome将websockets和xhr请求隔离到选项卡,我发现很难理解它是如何工作的。

作为一个补充点:我从一开始就没有使用websockets的原因是因为我使用了cloudflare。但如果这是解决问题的方法那么:就这样吧。

1 个答案:

答案 0 :(得分:14)

使用真正的webSocket,而不是XHR轮询。 webSocket连接不计入同一来源的http连接限制。

可以创建多少个webSocket连接有一个单独的全局限制,但它是一个很高的数字(Firefox中有200个 - 不确定它在Chrome中的确切位置)。

以下是有关此主题的一些参考资料: