如果多個socket.io服務器(ALB平衡)客戶端正在連接並斷開兩個節點的連接,導致'傳輸錯誤'。理想情況下,它應該連接到一個節點並保持連接到該節點。在ALB中有一個節點的情況下,連接保持持久性。任何幫助?socket.io客戶端連接重複斷開連接
1
A
回答
1
默認情況下,當socket.io第一次啓動時,它將以http輪詢模式啓動。經過幾次連續的http請求,並在兩端的能力檢查完成後,它將切換到webSocket模式。這是爲了首先建立一個工作連接,然後確定兩端是否支持webSocket,如果是,則切換到使用webSocket。如果你有一個非粘性負載平衡器,那麼你確實可能會遇到前幾個http輪詢請求的問題,這些請求會在不同的服務器上結束,這可能會破壞socket.io的工作方式,因爲單個服務器會丟失一些連接啓動順序。
您可以將您的負載均衡器配置爲粘性,以便他們始終將同一個客戶端發送到同一臺服務器,或者您可以告訴socket.io您只希望它以webSocket模式連接。
配置socket.io僅使用一個網頁套接字和無輪詢(所以只有一個連接),你可以在這裏看到設置在客戶端的配置選項:
Socket.io 1.x: use WebSockets only?
請記住, socket.io具有自動連接邏輯,因此如果在建立到服務器的socket.io連接後很長一段時間,連接因某種原因停止工作,客戶端將丟棄當前連接並嘗試創建一個新連接。如果您仍在使用非粘性負載平衡器,則該重新連接可能會在不同的服務器上結束。取決於你在服務器上做什麼,可能會或可能不成問題。粘性負載平衡將確保重新連接在同一臺服務器上結束。
相關問題
- 1. socket.io斷開連接事件,客戶端斷開連接檢測
- 2. 如何從客戶端斷開連接並重新連接socket.io?
- 3. 客戶端斷開連接
- 4. 重新連接斷開連接的客戶端套接字
- 5. Socket.io - 客戶端斷開後手動重新連接
- 6. socket.io客戶端不連接
- 7. socket.io客戶端重新連接超時
- 8. (Restify,ReactJS,Node.js)Socket.io客戶端狀態斷開連接,服務器記錄連接
- 9. Socket.io:第一個客戶端斷開第二個連接
- 10. socket.io客戶端發送時斷開連接
- 11. Websocket客戶端斷開連接websocket4net
- 12. 處理TCP客戶端斷開連接
- 13. 「客戶端斷開連接」HttpException
- 14. PHPWebsocket客戶端立即斷開連接
- 15. 客戶端連接/斷開qjsonrpc事件
- 16. socket.id斷開連接客戶端?
- 17. SignalR .NET客戶端斷開連接
- 18. 斷開連接時銷燬socket.io連接
- 19. C STREAM客戶端套接字在斷開連接後重用
- 20. 將客戶端斷開連接並重新連接到接收者會話
- 21. 扭曲 - 我需要定期連接/斷開客戶端連接
- 22. Socket.io斷開連接和redis
- 23. 客戶不handshaken客戶端應該重新連接,socket.io集羣
- 24. socket.io客戶端如何進行連接
- 25. socket.io-客戶端連接,但不發光
- 26. Socket.io客戶端未連接服務器
- 27. 斷開並重新連接手動Socket.IO
- 28. 觸發socket.io客戶端在重新啓動時發出斷開連接
- 29. 客戶端重新連接
使用連接直接使用傳輸作爲websocket而不是輪詢的任何缺點? –
@VikasGoyal - 如果您在不支持webSockets的瀏覽器中運行,那麼您將無法獲得連接。 socket.io通常會通過用http輪詢代替丟失的webSocket來處理這種情況。 – jfriend00