ChannelInboundHandlerAdapter 和 ChannelOutboundHandlerAdapter 是否影响 netty4 中 运行 编码器和解码器的顺序?

Does ChannelInboundHandlerAdapter and ChannelOutboundHandlerAdapter effects the sequence of running encoder and decoder in netty4?

我正在使用 netty4 来实现编码器和解码器。

当我扩展 ChannelInboundHandlerAdapter 类型的解码器和 ChannelOutboundHandlerAdapter 类型的编码器时,它的 运行 序列应该是什么?

  1. 先编码后解码。
  2. 先解码后编码。

另外,ChannelOutboundHandlerAdapter和ChannelInboundHandlerAdapter是如何影响读(I/O)和写(I/O)的,应该用在什么地方?

注意以下几点:

ChannelInboundHandler —Processes inbound data and state changes of all kinds ChannelOutboundHandler —Processes outbound data and allows interception of all operations

例如,当消息传入时,即当您从套接字读取数据时,ChannelInboundHandler 会收到通知。它还会收到状态更改的通知,例如 writabilityChanged、channelActive 和 Inactive 事件。

当您将数据写入通道时,ChannelOutboundHandler 会收到通知。它还会在通道上进行连接、断开连接和读取等调用时收到通知。

要实现编码器和解码器,您可以在 netty 中扩展预定义的解码器和编码器,例如 ByteToMessageDecoderMessageToMessageDecoderMessageToByteEncoderMessageToMessageEncoder,因为这会简化您的任务。

关于decoder和encoder的执行顺序可以这样想: 当一条消息通过套接字到达您的应用程序时,它将以字节流的形式出现,然后您必须对其进行解码以进行处理。当您向外部各方发送消息时,您必须在将其写入套接字之前将其编码为字节。编码器和解码器的执行顺序取决于此过程。