什么是 Netty 空闲检测?
什么是 Netty 空闲检测?
什么是 Netty 空闲检测?
在 Netty 中,提供了 IdleStateHandler 类,正如其名,空闲状态处理器,用于检测连接的读写是否处于空闲状态。如果是,则会触发 IdleStateEvent 。
IdleStateHandler 目前提供三种类型的心跳检测,通过构造方法来设置。代码如下:
1
2
3
4
5
// IdleStateHandler.javapublic IdleStateHandler(
int readerIdleTimeSeconds,
int writerIdleTimeSeconds,
int allIdleTimeSeconds){
this(readerIdleTimeSeconds, writerIdleTimeSeconds, allIdleTimeSeconds,TimeUnit.SECONDS);}
- readerIdleTimeSeconds 参数:为读超时时间,即测试端一定时间内未接受到被测试端消息。
- writerIdleTimeSeconds 参数:为写超时时间,即测试端一定时间内向被测试端发送消息。
- allIdleTimeSeconds 参数:为读或写超时时间。
另外,我们会在网络上看到类似《IdleStateHandler 心跳机制》这样标题的文章,实际上空闲检测和心跳机制是两件事。
- 只是说,因为我们使用 IdleStateHandler 的目的,就是检测到连接处于空闲,通过心跳判断其是否还是有效的连接。
- 虽然说,TCP 协议层提供了 Keeplive 机制,但是该机制默认的心跳时间是 2 小时,依赖操作系统实现不够灵活。因而,我们才在应用层上,自己实现心跳机制。
本文由作者按照 CC BY 4.0 进行授权