5netty第四个例子,空闲检测handle
Posted amibandoufu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5netty第四个例子,空闲检测handle相关的知识,希望对你有一定的参考价值。
netty可支持空闲检测的处理器,用于心态检测,当服务器端超出等待时间,没发生事件时,会触发handler中的方法 userEventTriggered。
initializer
1 import io.netty.channel.ChannelInitializer; 2 import io.netty.channel.ChannelPipeline; 3 import io.netty.channel.socket.SocketChannel; 4 import io.netty.handler.timeout.IdleStateHandler; 5 6 import java.util.concurrent.TimeUnit; 7 8 public class MyServerInitlalizer extends ChannelInitializer<SocketChannel> 9 @Override 10 protected void initChannel(SocketChannel ch) throws Exception 11 ChannelPipeline pipeline = ch.pipeline(); 12 13 //空闲事件处理器 读空闲5s 写空闲3s 读写空闲7s 14 pipeline.addLast(new IdleStateHandler(5,7,3,TimeUnit.SECONDS)); //空闲检测 在一定时间间隔内 没有读写 15 pipeline.addLast(new MyServerHandler());//自定义的空闲事件处理器 16 17 18
handler
1 import io.netty.channel.ChannelHandlerContext; 2 import io.netty.channel.ChannelInboundHandler; 3 import io.netty.channel.ChannelInboundHandlerAdapter; 4 import io.netty.channel.SimpleChannelInboundHandler; 5 import io.netty.handler.timeout.IdleStateEvent; 6 7 public class MyServerHandler extends ChannelInboundHandlerAdapter 8 @Override 9 public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception 10 //super.userEventTriggered(ctx, evt); 11 if ( evt instanceof IdleStateEvent) //如果是一个空闲状态 12 IdleStateEvent event = (IdleStateEvent) evt; 13 14 String eventType = null; 15 16 switch (event.state()) 17 case READER_IDLE: 18 eventType = "读空闲"; 19 break; 20 case WRITER_IDLE: 21 eventType = "写空闲"; 22 break; 23 case ALL_IDLE: 24 eventType = "读写空闲"; 25 break; 26 27 28 System.out.println(ctx.channel().remoteAddress() + "超时事件: " + eventType); 29 30 ctx.channel().close(); 31 32 33
以上是关于5netty第四个例子,空闲检测handle的主要内容,如果未能解决你的问题,请参考以下文章
(C语言)多线程beginthreadex的第四个参数(结构体)到底怎么设置才能正确传递数值
Oracle 正则表达式函数-REGEXP_SUBSTR 使用例子
Oracle 正则表达式函数-REGEXP_REPLACE 使用例子