gpt4 book ai didi

android - socket.io 客户端连接反复断开

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:33 24 4
gpt4 key购买 nike

如果有多个socket.io服务器(ALB平衡),客户端与两个 Node 连接和断开连接会出现“传输错误”。理想情况下,它应该连接到一个 Node 并保持与该 Node 的连接。如果 ALB 中有一个 Node ,连接将保持持久状态。有什么帮助吗??

最佳答案

默认情况下,当socket.io首次启动时,它以http轮询模式启动。经过几个连续的 http 请求,并对两端的功能进行 OK 检查后,它将切换到 webSocket 模式。这样做是为了首先建立工作连接,然后确定两端是否都支持 webSocket,如果支持,则切换到使用 webSocket。如果您有一个非粘性负载平衡器,那么您确实可能会遇到一个问题,即前几个 http 轮询请求最终出现在不同的服务器上,这可能会破坏 socket.io 的工作方式,因为单个服务器会丢失启动序列中的一些连接。

您可以将负载均衡器配置为粘性,以便它们始终将相同的客户端发送到同一服务器,或者您可以告诉 socket.io 您只希望它以 webSocket 模式连接。

要将socket.io配置为仅使用webSocket而不使用轮询(因此只有一个连接),您可以在客户端中设置一个配置选项,如下所示:

Socket.io 1.x: use WebSockets only?

请记住,socket.io 具有自动连接逻辑,因此,如果在与服务器建立 socket.io 连接后很长一段时间,该连接由于某种原因停止工作,客户端将放弃当前连接并尝试建立一个新连接。如果您仍在使用非粘性负载均衡器,则重新连接可能最终会在不同的服务器上。取决于您在服务器上执行的操作,这可能会或可能不会出现问题。粘性负载平衡将确保重新连接最终位于同一服务器上。

关于android - socket.io 客户端连接反复断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42478997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com