Bootstrap的handler和childHandler
生活随笔
收集整理的這篇文章主要介紹了
Bootstrap的handler和childHandler
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們知道不管是服務端還是客戶端都進行了handler的設置,通過添加hanlder,我們可以監聽Channel的各種動作以及狀態的改變,包括連接,綁定,接收消息等。
handler在初始化時就會執行,而childHandler會在客戶端成功connect后才執行,這是兩者的區別。
我們的代碼經常這樣寫
EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(bossGroup,workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG,128).childOption(ChannelOption.SO_KEEPALIVE,true)-
childHandler()和childOption()都是給workerGroup (也就是group方法中的childGroup參數)進行設置的,option()和handler()都是給bossGroup(也就是group方法中的parentGroup參數)設置的。
-
另一種方法說option()和handler()是在server啟動時進行設置和調用,childHandler()和childOption()是在連接建立是設置和調用的。其實都是對的。
-
bossGroup是在服務器一啟動就開始工作,負責監聽客戶端的連接請求。當建立連接后就交給了workGroup進行事務處理,兩種是從不同的角度解釋的。
在代碼中我們看到這樣的操作
//添加一個Hanlder用來處理各種Channel狀態 pipeline.addLast("handlerIn", new ClientHandler()); //添加一個Handler用來接收監聽IO操作的 pipeline.addLast("handlerOut", new OutHandler());pipeline是伴隨Channel的存在而存在的,交互信息通過它進行傳遞,我們可以addLast(或者addFirst)多個handler,第一個參數是名字,無具體要求,如果填寫null,系統會自動命名。
文章轉自
總結
以上是生活随笔為你收集整理的Bootstrap的handler和childHandler的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年中国物流地产行业发展报告
- 下一篇: 雷军:我40岁一事无成