一,websocket常遇到哪些不理因素
1,假死 websocket 有自我检测机制,当断开连接的时候会发起重连机制,但是有时候长链接处于假死状态,导致发送消息收不到
2,断开就重连,如果客户端过多,一个客户端 一秒重连一次,100个客户端会出现一秒连接100次,造成没必要的资源浪费
3,网络因素影响长链接,由于用户当前网络不稳定 比如 2G 3G 4G切换,wifi切换,导致长链接断开,这种情况需要根据网络变换检测长链接是否有效,如果无效,那么放弃就连接,开启新连接,根据当前网络变化,和断开时间,来确定什么时候进行重连,和重连次数
二,解决假死
心跳检测步骤:
1客户端每隔一个时间间隔发生一个探测包给服务器
2客户端发包时启动一个超时定时器
3服务器端接收到检测包,应该回应一个包
4如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器
5如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了
三,解决无效连接
1,客户端检测当前网络书否正常
2,如果不正常就提示用户网络目前不正常
3,如果正常,第一次重连间隔 1s,第二次重连间隔2s,第三次重连间隔3s,如果全部失败,那么说明服务器有问题,报服务器异常消息
四,解决网络不稳定导致websocket异常
1,当网络发生变化是,立即发送ping 查看是否收到pong,如果收到就结束
2,如果收到不到 间隔时间发送ping,如果还是收到,说明当前连接出现异常
3,检测当前网络,网络异常就报异常
4,网络正常,就发起重连机制