一、Netty超时机制的简单介绍:
Netty 的超时类型 IdleState
主要分为:
ALL_IDLE
: 一段时间内没有数据接收或者发送
READER_IDLE
: 一段时间内没有数据接收
WRITER_IDLE
: 一段时间内没有数据发送
在 Netty 的 timeout 包下,主要类有:
IdleStateEvent
: 超时的事件
IdleStateHandler
: 超时状态处理
ReadTimeoutHandler
: 读超时状态处理
WriteTimeoutHandler
: 写超时状态处理
其中 IdleStateHandler
包含了读\写超时状态处理,比如
private static final int READ_IDEL_TIME_OUT = 4; // 读超时
private static final int WRITE_IDEL_TIME_OUT = 5;// 写超时
private static final int ALL_IDEL_TIME_OUT = 7; // 所有超时
new IdleStateHandler(READ_IDEL_TIME_OUT,
WRITE_IDEL_TIME_OUT, ALL_IDEL_TIME_OUT, TimeUnit.SECONDS));
**
二、应用 IdleStateHandler
**
既然 IdleStateHandler 包括了读\写超时状态处理,那么很多时候 ReadTimeoutHandler 、 WriteTimeoutHandler 都可以不用使用。定义另一个名为 HeartbeatHandlerInitializer 的 ChannelInitializer :
public class HeartbeatHandlerInitializer extends ChannelInitializer<Channel> {
private static final int READ_IDEL_TIME_OUT = 4; // 读超时
private static final int WRITE_IDEL_TIME_OUT = 5;// 写超时
private static final int ALL_IDEL_TIME_OUT = 7