1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package cn.com.zyjblogs.chat.netty.handler;
- import cn.com.zyjblogs.chat.netty.channel.UserChannelContext;
- import cn.com.zyjblogs.chat.netty.po.Msg;
- import io.netty.channel.ChannelHandler;
- import io.netty.channel.ChannelHandlerContext;
- import io.netty.channel.ChannelInboundHandlerAdapter;
- import io.netty.handler.timeout.IdleStateEvent;
- import org.springframework.stereotype.Component;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- @Component
- @ChannelHandler.Sharable
- public class FreeClientHandler extends ChannelInboundHandlerAdapter {
- Logger logger = LoggerFactory.getLogger(FreeClientHandler.class);
- /***
- * 事件
- * @param ctx 上下文
- * @param evt 事件
- * @throws Exception
- */
- @Override
- public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
- if (evt instanceof IdleStateEvent){
- //将evt 向下转型 IdleStateEvent
- IdleStateEvent event = (IdleStateEvent) evt;
- String eventType = null;
- switch (event.state()){
- case READER_IDLE:
- eventType = "读空闲";
- break;
- case WRITER_IDLE:
- eventType = "读空闲";
- break;
- case ALL_IDLE:
- eventType = "读写空闲";
- break;
- default:
- eventType = "类型未识别";
- break;
- }
- logger.info("{}",ctx.channel().remoteAddress()+"--TimeOut Type--"+eventType);
- //如果发生空闲,我们关闭通道
- Msg.DataContent build = Msg.DataContent.newBuilder().setDataType(Msg.DataContent.DataType.CLOSING).build();
- ctx.writeAndFlush(build);
- ctx.close();
- }
- }
- }
|