2013-10-12 73 views
2

我正在使用socket.io,在我的聊天系統上進行xhr輪詢。我不想使用websocket,因爲不適用於所有用戶。但是當我使用xhr輪詢時,如果用戶在瀏覽器上打開5個選項卡,則郵件變慢。如何禁用socket.io上的五個連接限制?

這裏

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

我測試,但沒有worked.Still有5個連接我limit.How可以禁用這個限制同樣的問題?

+0

我仍然有這個問題:( –

回答

0

你自己提供的解決方案 - 您鏈接的bug票有鏈接到最終的解決方案,這基本上是補充一點:

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

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

+0

這不是working.Still有5個連接限制。因爲socket.io沒有執行http請求。 –

1

我很晚就遇到了這個問題,但看起來你已經達到了瀏覽器的連接限制。默認情況下,瀏覽器一次可以打開多少個連接到主機:端口的限制(例如,Chrome允許8個)

因此,對於您的socket.io情況,當您打開5個選項卡這意味着您已經使用了瀏覽器允許的5個連接。對於正常的網站,這不是問題,因爲您請求並接收到響應,則連接關閉。但是對於socket.io(和相關的庫),連接始終保持打開狀態,以接收「服務器推送」數據。我可能是錯的,但至少這是我的項目的問題(我不使用Socket.IO,但使用了類似的庫)

解決方案是限制應用程序中socket.io連接的數量,以便將始終只有1個連接。其餘通訊應通過交叉表(跨窗口)事件完成(例如通過LocalStorage)。結果是你有1個選項卡(窗口)保存真正的socket.io連接並將事件(從socket.io接收)廣播到其他選項卡(窗口)。當然,也有你需要考慮當你真正實現許多其他因素,它

P/S:我很抱歉我的英文不好