ChannelHandler之間處理數據格式轉換與Netty自帶的Channelhandler

Netty實現數據格式轉換的方式是繼承實現ByteToMessageDecoder和MessageToByteEncoder。服務器

ByteToMessageDecoder繼承ChannelInboundHandlerAdapter函數

MessageToByteEncoder繼承ChannelOutboundHandlerAdapter編碼

ByteToMessageDecoder在數據流轉過程當中承擔角色以下所示:加密

MessageToByteEncoder在數據流轉過程當中承擔角色以下所示: code

這裏寫圖片描述

  1. 若是須要作數據格式的轉換,能夠使用MessageToMessageDecoder和MessageToMessageEncoder;cdn

  2. 若是須要處的ByteBuf太長,能夠拋出TooLongFrameException;blog

  3. 若是須要一個類實現編碼和解碼能夠對應實現ByteToMessageCodec和MessageToMessageCodec繼承

  4. 若是一類實現編碼和解碼以爲耦合嚴重,能夠使用CombinedChannelDuplexHandler事件

Netty中有哪些自帶的ChannelHandler?

  1. SslHandler:負責對請求進行加密和解密,是放在ChannelPipeline中的第一個ChannelHandler
  2. HttpClientCodec和HttpServerCodec:HttpClientCodec負責將請求字節解碼爲HttpRequest、HttpContent和LastHttpContent消息,以及對應的轉爲字節;HttpServerCodec負責服務端中將字節碼解析成HttpResponse、HttpContent和LastHttpContent消息,以及對應的將它轉爲字節

HttpServerCodec 裏面組合了HttpResponseEncoder和HttpRequestDecoder圖片

HttpClientCodec 裏面組合了HttpRequestEncoder和HttpResponseDecoder

  1. HttpObjectAggregator: 負責將http聚合成完整的消息,而不是原始的多個部分
  2. HttpContentCompressor和HttpContentDecompressor:HttpContentCompressor用於服務器壓縮數據,HttpContentDecompressor用於客戶端解壓數據
  3. IdleStateHandler:鏈接空閒時間過長,觸發IdleStateEvent事件
  4. ReadTimeoutHandler:指定時間內沒有收到任何的入站數據,拋出ReadTimeoutException異常,並關閉channel
  5. WriteTimeoutHandler:指定時間內沒有任何出站數據寫入,拋出WriteTimeoutException異常,並關閉channel
  6. DelimiterBasedFrameDecoder:使用任何用戶提供的分隔符來提取幀的通用解碼器
  7. FixedLengthFrameDecoder:提取在調用構造函數時的定長幀
  8. ChunkedWriteHandler:將大型文件從文件系統複製到內存【DefaultFileRegion進行大型文件傳輸】
相關文章
相關標籤/搜索