需求
- 当客户端与服务端的连接建立后,他们之间就可以进行通信了。但是,若某客户端与服务端长时间没有进行通信,而Channel却被长时间占用,就会形成资源浪费。Netty提供了专门用于进行读写操作空闲检测的处理器可供使用。
开发
- 需要处理的一端(可以是服务端可以是客户端)添加new IdleStateHandler()来设置读写超时的时间
- Netty中包含了用于处理空闲检测的处理器,直接使用即可
//用于监听channel的其他事件
public class SomeServerHandler extends ChannelInboundHandlerAdapter{
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception{
if(evt instanceof IdleStateEvent){
IdleStateEvent event = (IdleStateEvent)evt;
String eventDes = null;
switch(event.state()){
case READER_IDLE : eventDes = "读空闲超时";break;
case WRITER_IDLE : eventDes = "写空闲超时";break;
case ALL_IDLE : eventDes = "读和写空闲都超时";break;
}
}
System.out.println(eventDes);
ctx.close();
}
}