服务器与客户端的长连接(channel)的可用性,需要依赖心跳检测,心跳机制需要依赖chanel中的AttributeMap属性。官网文档查找说明:https://netty.io/4.1/api/index.html
AttributeMap接口:设置
Attribute
Key,以及判断是否有
Attribute
Key
AttributeKey:从常量池中生成T,详细请查看源码。
Attribute:可以获取设置移除
Attribute
Key中的T.
channel和channelHandlerContext中都有AttributeMap,channel中是共享的,channelHandlerContext中是私有的。
服务器端使用:
心跳类型消息处理:
具体处理方式:
生成一个心跳属性AttributeKey,并设置Attribute为当前时间字符串。
读取Attribute中的设置的时间戳:
根据设置有心跳时间,判断长连接的有效性,如果超过设置的时间,关闭长连接: