netty 中客戶端添加解析器,channelRead0 不執行

項目中用了netty框架,自定義瞭解碼器,由於沒有結束符,導致了channelRead0一直不會執行。既然不會被動觸發,那就需要主動觸發。不過主動觸發的是         channelRead,不是channelRead0,這點需要注意,netty提供的方法就是fireChannelRead  。有兩種寫法:

1:ctx.fireChannelRead(msg);  //通過當前節點往下傳播事件

2: ctx.pipeline().fireChannelRead(msg);//通過頭節點往下傳遞事件

具體選擇哪種方法,結合實際情況考慮。我這裏Handler繼承的是SimpleChannelInboundHandler ,channelRead0不會觸發,所以需要重寫channelRead 方法。

 

 


但是,添加channelHandlerContext.fireChannelRead(out)後,再channelRead中接收到的msg是list類型,就會有轉換問題,因此我就把這句話給註釋了 ,但是可以正常運行

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章