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。