码迷,mamicode.com
首页 > Web开发 > 详细

netty的断线重连问题

时间:2019-07-10 10:27:19      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:active   客户端   image   去重   http   contex   png   mic   nbsp   

手里的这个项目需要作为客户端,不断的接收服务端发来的数据,用的netty框架,但是一直存在一个问题,就是断线重连问题。

什么是断线重连呢?

就是我们这个客户端要保证一直与服务端保持连接,这样客户端才能显示实时的数据给客户,为了保证这个连接一直在,就得不断的去判断这个连接是否还在,如果不在了,就重新连接。

在handler中有个channelInactive方法,可以监听到连接的断开事件。我们可以重写这个方法,比如在这个方法中做重连操作,那么连接断开的时候,就会触发这个方法,来重新连接服务端。

@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
    super.channelInactive(ctx);
}

 

但是非正常的断开,比如服务端突然挂了,或者网线突然断了,都无法触发这个方法,那么针对这些可能性,就需要另外处理了。

对此我发现,在这些意外情况发生后,如果给服务端写数据,这时肯定是会操作失败的,在写失败时,这个channelInactive方法被触发了,这样就好办了。

首先我们加一个监听,如果两分钟内没有收到来自服务端的任何数据,我们就向服务端写数据,如果写失败了,那么就会去触发我们的channelInactive方法,就会去重连了。

技术图片

技术图片

搞定!

 

netty的断线重连问题

标签:active   客户端   image   去重   http   contex   png   mic   nbsp   

原文地址:https://www.cnblogs.com/LcxSummer/p/11162022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!