用Netty实现物联网06:自动断开连接与自定义指令

我们在前面已经实现了通过自定义协议采集客户端发出的数据。但是在实际项目的运行中,硬件并不是时时刻刻都在发送数据,而是会按照设定的时间间隔,有规律地传输。或者有些硬件终端因为故障、电源耗尽而无法继续发送数据。如果出现这样的情况,那服务端是不是就要一直保持长连接呢?打个不恰当的比方,是不是有十万名游客来到故宫旅游,就要给故宫装十万个马桶呢?

这样做纯属浪费资源,而且也不可能实现。这放到客户端与服务端的通信机制上也是一样的——虽然有成千上万个硬件设备会与服务端通信,但是在某个时刻,只有固定数量的硬件才会给服务端发数据,而其它的都在「休眠」。

这就给工程师提了一个要求:服务端必须知道每一个与之通信的客户端,并且在客户端长久没连接的情况下主动关闭服务。

为什么是服务端来做这件事?——游客离开故宫难道还要给故宫打招呼吗?——这么想就能想通。

对于这个问题,作为一个优秀的通信框架,Netty怎么会忽略呢?当连接的空闲时间(读或者写)太长时,Netty将会触发一个IdleStateEvent事件,然后工程师可以通过覆写ChannelHandlerAdapter的userEventTriggered()方法来实现自己想要实现的功能。

所以,咱们可以先继承ChannelHandlerAdapter,然后覆写userEventTriggered()方法:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值