android 打电话socket断开,关于android:socket.io客户端反复断开连接

如果有多个socket.io服务器(ALB平衡),则客户端会与两个节点建立连接并断开连接,从而导致"传输错误"。 理想情况下,它应连接到一个节点并保持连接到该节点。 如果ALB中只有一个节点,则连接保持持久。 有帮助吗?

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

compile('io.socket:socket.io-client:0.8.3') {

exclude group: 'org.json', module: 'json'

}

这对我有用

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

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

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

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

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

将传输直接用作网络套接字而不是轮询来使用连接的任何缺点?

@VikasGoyal-如果您在不支持webSockets的浏览器中运行,则将无法建立连接。 通常,socket.io将通过使用http轮询代替缺少的webSocket来处理该情况。

删除旧版本后,使用以下版本的io.socket:

https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js

这个对我有用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值