ネッティープロセッサは、サーバーが待機時間を超えると、精神を検出するためのアイドル検出をサポートすることができ、ないイベントが発生した場合、ハンドラメソッドはuserEventTriggeredがトリガされます。
初期化子
1つの インポートio.netty.channel.ChannelInitializer。 2 インポートio.netty.channel.ChannelPipeline。 3 輸入io.netty.channel.socket.SocketChannel。 4 インポートio.netty.handler.timeout.IdleStateHandler。 5 6 インポートjava.util.concurrent.TimeUnit。 7 8 パブリック クラス MyServerInitlalizerは延び ChannelInitializer <たSocketChannel> { 9 @Override 10 保護 ボイド initChannel(のSocketChannel CH)がスロー例外{ 11 パイプライン= ChannelPipelineのch.pipeline(); 12である 13ことである // アイドルイベントプロセッサがアイドル書き込み7Sアイドルアイドル5S 3sとを読み書き 14 pipeline.addLast(新しい新しい IdleStateHandler(5,7,3、TimeUnit.SECONDS)); // アイドル一定時間内に検出されない区間リーダ 15 pipeline.addLast(新しい新しい MyServerHandler()); // カスタムイベントアイドルプロセッサ 16 17 } 18 }
ハンドラ
1 インポートio.netty.channel.ChannelHandlerContext。 2 インポートio.netty.channel.ChannelInboundHandler。 3 インポートio.netty.channel.ChannelInboundHandlerAdapter。 4 インポートio.netty.channel.SimpleChannelInboundHandler。 5 インポートio.netty.handler.timeout.IdleStateEvent。 6 7 パブリック クラス MyServerHandlerは延びChannelInboundHandlerAdapter { 8 @Override 9 公共 ボイド userEventTriggered(ChannelHandlerContext CTX、オブジェクトEVT)はスロー例外{ 10 //をsuper.userEventTriggered(CTX、EVT) 11 IF(EVT のinstanceof IdleStateEvent){ // それがアイドル状態であれば 12である IdleStateEventイベント= (IdleStateEvent)EVT、 13は 14 列のeventType = NULL ; 15 16 スイッチ(event.state()) { 。17 ケースREADER_IDLE: 18である のeventTypeは= "アイドル読み取る" ; 19。 BREAK ; 20は、 ケースWRITER_IDLE: 21れる EventTypeが"アイドル書き込み" ; 22である BREAK 。 23は、 ケース:ALL_IDLE 24 EventTypeが"アイドルリーダー" ; 25 BREAK ; 26である } 27 28 ([リモートのctx.channel()()+ "タイムアウトイベント:." +するSystem.out.println のeventType); 29 30 ctx.channel ().close(); 31である } 32 } 33です }