暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Netty socket 客户端 如何正确重新连接服务端 接收数据推送

纯洁的明依 2021-01-13
388

当服务端断开连接时 需要客户端进行重新连接

 


 

错误写法:

 


以上写法 根据全局成员非静态变量connectStatus判断 是否建立连接时。读取不到更新后的值。

当修改connectStatus 为全局静态变量时 可以读取到最新的值,但是会导致不能及时的将线程池中的任务 取消掉 会对服务端进行多次连接。从而服务端 推送过来的数据 不能接收到。

 


关于重连注意点:

ChannelFuture future = client.connect(socketIp, port);future.awaitUninterruptibly();

初始化连接使用这个

Future.awaitUninterruptibly

当再 channelInactive  进行异步定时重连时  不能加await()  会导致程序阻塞。

上述代码导致的问题:

 



 

遇到得奇葩问题:

 


当标红方法 不是静态方法,时普通成员方法 这个定时任务不会执行。

 

最优写法:

采用schedule 延迟执行,监听返回结果 如果没有连接成功 则进行递归操作;否则停止任务。



文章转载自纯洁的明依,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论