Netty之处理器handler

Netty处理器重要概念:

  1. Netty的处理器可以分为两类:入站处理器与出站处理器。
  2. 入站处理器的顶层:ChannelInboundHandler,出站处理器的顶层:ChannelOutboundHandler。
  3. 数据处理时常用的各种编解码器本质上都是处理器。
  4. 编解码器:无论我们向网络写入的数据是什么类型(int、char、String、二进制等),数据在网络中传递时,其都是以字节流的形式呈现的;将数据由本来的形式转换为字节流的操作称为编码(encode);将数据由字节转换为它原本的格式或是其他格式的操作称为解码(decode)。编解码统一称为codec。
  5. 编码:本质上是一种出站处理器。因此,编码一定是一种ChannelOutboundHandler。
  6. 解码:本质上是一种入站处理器。因此,解码一定是一种ChannelInboundHandler。
  7. 在Netty中,编码器通常以XXXEncoder命名;解码器通常以XXXDecoder命名。

TCP粘包和拆包。

关于Netty编解码器的重要结论:

  1. 无论是编码器还是解码器,其所接受的消息类型必须要与待处理的参数类型一致,否则该编码器或解码器并不会被执行。
  2. 在解码器进行数据解码时,一定要记得判断缓冲(ByteBuf)中的数据是否足够,否则会产生一些问题。