维护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长链接的稳定的主要内容,如果未能解决你的问题,请参考以下文章

websocket协议握手详解

HTML5 - Websocket

015_NGINX作为WebSocket Proxy的设置

实现单台测试机6万websocket长连接

实现单台测试机6万websocket长连接

WebSocket 实现服务端给客户端推送消息