+
 新版

Netty 客户端如何判断服务端时候断开

鬼之谷子 发布于 2015/11/05 11:50
阅读 19K+
收藏 0
netty客户端如何能够知道服务端关闭了呢?各位大神有知道的么?可以根据什么来判断呢?(不用心跳机制,由于服务端没有心跳返回,心跳机制不适用),在线急等。
加载中
0
ChangeZ
ChangeZ
Channel里有相关方法
鬼
鬼之谷子
是isActive方法么?我使用了Channel.isActive(),发现当 channel.writeAndFulsh(message) 之后 isActive返回的是false,此时连接没有关闭
0
beyondforever68
beyondforever68
handle的channelInactive在socket断开的时候会触发吧
0
fagongzi
fagongzi
补充一下,要检查链接是否正常,建议补充心跳机制,因为比如直接拔网线等行为,应用层是接收不到这个信号的,所以netty框架还会认为这个链接是正常的,从而产生错误。
鬼
鬼之谷子
在应用启动的时候,将channel缓存起来了,第一次发送消息的时候成功了,channel没有关闭,第二次发送的时候却失败了,走到了channelInActive()中了,channel.isActive()=false,这是什么情况呢?
0
游客
游客
必须心跳
鬼
鬼之谷子
这里可以不用心跳,因为我使用的client 是进行http消息的发送,当分装request时,加上connection:keep-alive,同时client 设置成keep-alive,当连接上,客户端和服务端会一直连接上,判断是否断开 可以更加channel.isActive()进行判断
0
yuzhouliu
yuzhouliu

Netty是事件驱动的,应该有方法,channelDisconnected你看看,即使有这个处理方法也无法判定是服务器端关闭了,也可能是网络上的线路出了问题

鬼
鬼之谷子
网络没有问题哦。 webservice—>netty client -> webservice 第一次发送 能得到相应,第二次发送不能够呢,发现 netty client端的 channel.isActive()=false, 操作过程中 netty client没有关闭。
0
鬼
鬼之谷子
已解决,谢谢各位了
夜空中最最亮的星
夜空中最最亮的星
怎么解决的?解决完了就不回复了吗?
ansha8861
ansha8861
请问解决方法是什么呢
0
编走编想
编走编想
还有 exceptionCaught
0
夜空中最最亮的星
夜空中最最亮的星

楼主解决的方法是什么?引起的原因是什么

0
myr12333
myr12333
客户端注册监听事件,如果服务端挂掉,客户端会监听到
Channel channel = f.channel();
channel.closeFuture().addListener(new ChannelFutureListener() {
    public void operationComplete(ChannelFuture channelFuture) throws Exception {
        //业务逻辑处理代码,此处省略,如果这里阻塞就会一直阻塞
        //如果不实现就会退出main
        LOGGER.info(channelFuture.channel().toString()+"链路关闭");
    }
});
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部