心跳实现_netty心跳实现

服务器与客户端的长连接(channel)的可用性,需要依赖心跳检测,心跳机制需要依赖chanel中的AttributeMap属性。官网文档查找说明:https://netty.io/4.1/api/index.html

0b9e6a0d3a7dff417566e668ed295f0d.png

AttributeMap接口:设置 Attribute Key,以及判断是否有 Attribute Key

14112a89c41a6ed6c7a3413dfc690100.png

AttributeKey:从常量池中生成T,详细请查看源码。

e0859ca993f0b8e3fef5b2a52b3812eb.png

Attribute:可以获取设置移除 Attribute Key中的T.

7098ac1f88ece988bc63667e64e32578.png

channel和channelHandlerContext中都有AttributeMap,channel中是共享的,channelHandlerContext中是私有的。

dd60d4ffd619d7c5ceee62102a8640b0.png

服务器端使用:

心跳类型消息处理:35865bd34f97a619457345457c218f72.png

具体处理方式:

161d4304b7b74829e7919a8e83e6424d.png

生成一个心跳属性AttributeKey,并设置Attribute为当前时间字符串。

4322405be1776585ae94f41008805a69.png

读取Attribute中的设置的时间戳:

99f8870ccf00181a4dd101a68835dfd0.png

根据设置有心跳时间,判断长连接的有效性,如果超过设置的时间,关闭长连接:

68624506a0ad3543a813ff1cc5f4185e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值