首页 文章

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

提问于
浏览
1

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

2 回答

  • 0

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

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

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

    Socket.io 1.x: use WebSockets only?

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

  • 0

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

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

    这对我有用

相关问题