Netty学习篇④-心跳机制及断线重连
心跳检测 <font size=4 color=black> 前言 </font> 客户端和服务端的连接属于socket连接,也属于长连接,往往会存在客户端在连接了服务端之后就没有任何操作了,但还是占用了一个连接;当越来越多类似的客户端出现就会浪费很多连接,netty中可以通过心跳检测来找出一定程度(自定义规则判断哪些连接是无效链接)的无效链接并断开连接,保存真正活跃的连接。 <font size=4 color=black> 什么叫心跳检测 </font> 我理解的心跳检测应该是客户端/服务端定时发送一个数据包给服务端/客户端,检测对方是否有响应; 如果是存活的连接,在一定的时间内应该会收到响应回来的数据包; 如果在一定时间内还是收不到接收方的响应的话,就可以当做是挂机,可以断开此连接; 如果检测到了掉线之后还可以进行重连; <font size=4 color=black> 心跳检测的实现 </font> TCP自带心跳检测,协议层采用Keeplive机制默认2小时频率触发一次检测,但是它存在缺陷:检测不出网线拔出、防火墙、使用起来不灵活、依赖操作系统等 Netty可以通过IdleStateHandler来实现心跳检测,使用起来也非常方便清晰 <font size=4 color=black> IdleStateHandler原理 </font>