需求
- 当客户端与服务端的连接建立后,他们之间就可以进行通信了。但是,若某客户端与服务端长时间没有进行通信,而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(); }}