2024年3月14日发(作者:)
websocket pingpong机制图解:
注:websocket基于tcp协议,它在第一次连接时发起http请求,之
后建立握手
在websocket中设置setConnectionLostTimeout参数,解释为:Setter
for the interval checking for lost connections,意思是间隔检查连接是
否丢失
整体是调用顺序为:onWebsocketOpen -》 startConnectionLostTimer
-》 restartConnectionLostTimer-》 scheduleAtFixedRate -》
executeConnectionLostDetection
关键代码:
connectionLostTimeout在设置后会转为纳秒时
间, minimumPongTime为当前纳秒时间减去
connectionLostTimeout的1.5倍,当最后一次Pong的时间小于
minimumPongTime时产生close,即在间隔时间内未收到Pong响
应关闭连接。如果正常则继续发送ping,即调用sendPing。
在服务端收到ping的时候,立即下发pong,两者的容忍时间为
connectionLostTimeout是1.5倍,即设十秒的话就是容忍十五秒。
当网络发生异常时,两者情况,服务端没有收到ping亦或者客户端
没有收到pong,触发close。


发布评论