目的:
心跳检测的目的:为了确保 WebSocket 连接的活性,防止由于网络波动、服务器故障等导致连接中断而双方未察觉。
方案:
确定心跳包的发送和接收机制:客户端定时发送心跳包,服务器收到后回复,客户端根据回复来确认连接正常。
具体方案:
- 客户端定时向服务端提供的一个keepalive的接口发请求,如果请求成功表示通道是活的;
- 心跳检测重试机制的话采用的先是逐步加快检测频率:第一次5s 第二次3 s 第三次1秒;
- 三次重试后发现还是没有连接上的话,最后一个为了降低重试成本,20s后再重试,大概率就是无法连接了;
前几次防止由于是网络波动出现的问题,避免过度消耗资源;可以更敏锐的捕捉到连接是否有问题
如果4次都重试过了, 并且当前disconnect 为true的话,就主动断开