如果ChannelHandler之間處理資料格式不一樣,可以怎麼做轉換?

weixin_33766168發表於2018-05-30

把書讀薄(Netty In Action 第十章)

Netty實現資料格式轉換的方式是什麼?

繼承實現ByteToMessageDecoder和MessageToByteEncoder。

ByteToMessageDecoder繼承ChannelInboundHandlerAdapter
MessageToByteEncoder繼承ChannelOutboundHandlerAdapter

ByteToMessageDecoder在資料流轉過程中承擔角色如下所示:
圖片描述

MessageToByteEncoder在資料流轉過程中承擔角色如下所示:
圖片描述

1:如果需要做資料格式的轉換,可以使用MessageToMessageDecoder和MessageToMessageEncoder;
2:如果需要處的ByteBuf太長,可以丟擲TooLongFrameException;
3:如果需要一個類實現編碼和解碼可以對應實現ByteToMessageCodec和MessageToMessageCodec
4:如果一類實現編碼和解碼覺得耦合嚴重,可以使用CombinedChannelDuplexHandler

相關文章