解码器的功能正好相反。Netty 提供了一组类,用于帮助你编写具有以下功能的编码器:

  • 将消息编码为字节;MessageToByteEncoder
  • 将消息编码为消息:MessageToMessageEncoder,T 代表源数据的类型

    将消息编码为字节 MessageToByteEncoder

    encode(ChannelHandlerContext ctx,I msg,ByteBuf out)
    encode()方法是你需要实现的唯一抽象方法。它被调用时将会传入要被该类编码为ByteBuf 的出站消息(类型为 I 的)。该 ByteBuf 随后将会被转发给 ChannelPipeline 中的下一个 ChannelOutboundHandler

    将消息编码为消息 MessageToMessageEncoder

    encode(ChannelHandlerContext ctx,I msg,List out)
    这是你需要实现的唯一方法。每个通过 write()方法写入的消息都将会被传递给 encode() 方法,以编码为一个或者多个出站消息。随后,这些出站消息将会被转发给 ChannelPipeline 中的下一个 ChannelOutboundHandler