我是靠谱客的博主 端庄高山,最近开发中收集的这篇文章主要介绍在netty中怎么快速判断设备TCP断开了链接(物理终端断开连接,netty服务器端怎么知道),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
先说一下背景吧,公司开发一款新的终端设备,用的JTT808协议。然后呢,需要一个新的网关。于是找了一下用了Netty+springboot的架构。因为以前做的都是C,C++的,刚转投JAVA门下,遇到了很多问题。
今天要说的问题就是,不使用netty的心跳机制,然后如何判断终端的设备掉线了。
先上结论,复写ChannelHandlerAdapter中的handlerRemoved。
@Override
public void handlerRemoved(ChannelHandlerContext ctx) throws Exception{
// 我这里用了map来保存链接,方便给终端发消息用
Map<String, ChannelId> map = ChannelManager.channelIdMap;
String mapKey = "";
// 通过对比channel的id,知道哪个设备掉线了,然后删除
for(Map.Entry<String, ChannelId> entry : map.entrySet()){
mapKey = entry.getKey();
ChannelId mapValue = entry.getValue();
log.info("客户端{}读取超时,{}", mapKey,mapValue);
if(mapValue == ctx.channel().id())
{
log.info("成功了{},{}", mapKey,mapValue);
}
}
//这里执行客户端断开连接后的操作
log.error("断开了链接");
ctx.close();
if(!mapKey.equals(""))
{
map.remove(mapKey);
}
}
代码经过试验了,每当有TCP断开连接的时候,都会调用这个函数。所以可以在想要处理的handler中,复写这个函数加上要实现的内容就好了。
最后
以上就是端庄高山为你收集整理的在netty中怎么快速判断设备TCP断开了链接(物理终端断开连接,netty服务器端怎么知道)的全部内容,希望文章能够帮你解决在netty中怎么快速判断设备TCP断开了链接(物理终端断开连接,netty服务器端怎么知道)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复