维护websocket长链接的稳定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了维护websocket长链接的稳定相关的知识,希望对你有一定的参考价值。
参考技术A 1,假死 websocket 有自我检测机制,当断开连接的时候会发起重连机制,但是有时候长链接处于假死状态,导致发送消息收不到2,断开就重连,如果客户端过多,一个客户端 一秒重连一次,100个客户端会出现一秒连接100次,造成没必要的资源浪费
3,网络因素影响长链接,由于用户当前网络不稳定 比如 2G 3G 4G切换,wifi切换,导致长链接断开,这种情况需要根据网络变换检测长链接是否有效,如果无效,那么放弃就连接,开启新连接,根据当前网络变化,和断开时间,来确定什么时候进行重连,和重连次数
心跳检测步骤:
1客户端每隔一个时间间隔发生一个探测包给服务器
2客户端发包时启动一个超时定时器
3服务器端接收到检测包,应该回应一个包
4如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器
5如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了
1,客户端检测当前网络书否正常
2,如果不正常就提示用户网络目前不正常
3,如果正常,第一次重连间隔 1s,第二次重连间隔2s,第三次重连间隔3s,如果全部失败,那么说明服务器有问题,报服务器异常消息
1,当网络发生变化是,立即发送ping 查看是否收到pong,如果收到就结束
2,如果收到不到 间隔时间发送ping,如果还是收到,说明当前连接出现异常
3,检测当前网络,网络异常就报异常
4,网络正常,就发起重连机制
android 10 长链接 WebSocket
相关资料
Android开发之保活措施
后台执行限制
使设备保持唤醒状态
优化电池续航时间
其中的 使用可使设备保持唤醒状态的广播接收器WakefulBroadcastReceiver
我这研究的是前台进程 在小米手机上还是会被kill 收不到消息
使用的一个Service + okhttp 的 newWebSocket 实现 长链接
以上是关于维护websocket长链接的稳定的主要内容,如果未能解决你的问题,请参考以下文章