図5に示すように、網状第例えば、アイドル検出ハンドル

ネッティープロセッサは、サーバーが待機時間を超えると、精神を検出するためのアイドル検出をサポートすることができ、ないイベントが発生した場合、ハンドラメソッドは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です }

 

おすすめ

転載: www.cnblogs.com/amibandoufu/p/11442823.html