繁体   English   中英

socket.io客户端重复断开连接

[英]socket.io client getting connected disconnected repeatedly

在多个socket.io服务器(ALB平衡)的情况下,客户端与两个节点之间的连接和断开连接,从而产生“传输错误”。 理想情况下,它应连接到一个节点并保持与该节点的连接。 在ALB中的一个节点的情况下,连接保持持久。 任何帮助?

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

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

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

Socket.io 1.x:仅使用WebSockets?

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

使用0.8.3版本的io.socket删除新版本1.0.0

compile('io.socket:socket.io-client:0.8.3') {
    exclude group: 'org.json', module: 'json'
}

这对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM