文章

什么是 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 进行授权