最近使用Netty 异步通讯框架 ,在使用的过程中发现如果当网络断开的时候会出现无法检测的现象;
影响长链接断开的原因主要有三种:1.服务停止,2.本地网线断开,3.公网或者局域网中交换机断开;
在使用的过程中发现在服务停止或者本地网络断开的时候netty的@ChannelHandler中的channelInactive会被调用,但是如果要是公网或者局域网交换机直接网络断开是不能立刻收到channelInactive的回调;所以我设计的是通过IdleStateHandler函数进行回调;在每次收到心跳数据之后写一个延迟发送的函数,延迟心跳时间发送心跳
算了还是上代码吧,实在是写不下去了;
NettyClientBootstrap android客户端启动类
netty客户端的入口程序完成后接下来我们来完成更为主要的handler实现程序
首次写简书,也不知道如何写主要就是贴上代码,让大家能够帮助检查一下,以望能够有大神能够读到帮助改正其中可能会在的bug以及不足之处;还有就是强烈推荐大家使用rxjava 异步 机制,写出来的代码真的是很好看