定时器
netty定时器使用比较简单,只需要作如下设置。
其中,第一位为读超时时间,第二位为写超时时间,第三位为所有超时时间。如果设置为0,表示不启用。
pipeline.AddLast("IdleStateHandler", new IdleStateHandler(0, 10, 0));
一般来说服务器主要监听读超时事件,而客户端监听写超时事件。
主要通过重写 UserEventTriggered 方法来做具体的业务逻辑。
下面这段代码是当服务器发现丢失了三个心跳包以后直接关闭客户端的连接
断线重连
断线重连的逻辑主要是实现在客户端代码这边ChannelInactive方法
测试
我们可以看到,每经过3个丢失的包,服务器便会主动断开客户端的连接;然后客户端知道自己被断开后,会间隔5秒尝试连接服务器,直到成功为止。