[英]Does ChannelInboundHandlerAdapter and ChannelOutboundHandlerAdapter effects the sequence of running encoder and decoder in netty4?
我正在使用netty4實現編碼器和解碼器。
當我擴展ChannelInboundHandlerAdapter類型的解碼器和ChannelOutboundHandlerAdapter類型的編碼器時,它的運行順序應該是什么?
另外,ChannelOutboundHandlerAdapter和ChannelInboundHandlerAdapter如何影響讀取(I / O)和寫入(I / O),應該在哪里使用?
請注意以下幾點:
ChannelInboundHandler
處理各種入站數據和狀態更改ChannelOutboundHandler
處理出站數據並允許攔截所有操作
例如,當一條消息傳入時(即您正在從套接字讀取數據時),將通知ChannelInboundHandler 。 此外,還會通知狀態更改(如writabilityChanged,channelActive和Inactive事件)。
當您將數據寫入通道時,將會通知ChannelOutboundHandler 。 通道上的連接,斷開連接和讀取等呼叫也將得到通知。
要實現編碼器和解碼器,您可以在網絡中擴展預定義的解碼器和編碼器,例如ByteToMessageDecoder
, MessageToMessageDecoder
, MessageToByteEncoder
和MessageToMessageEncoder
因為這將簡化您的任務。
關於解碼器和編碼器的執行順序,請這樣考慮:當消息通過套接字到達您的應用程序時,它將以字節流的形式出現,那么您將必須對其進行解碼以進行處理。 在向外部各方發送消息時,必須先將其編碼為字節,然后再將其寫入套接字。 編碼器和解碼器的執行順序取決於此過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.