[英]Does ChannelInboundHandlerAdapter and ChannelOutboundHandlerAdapter effects the sequence of running encoder and decoder in netty4?
我正在使用netty4实现编码器和解码器。
当我扩展ChannelInboundHandlerAdapter类型的解码器和ChannelOutboundHandlerAdapter类型的编码器时,它的运行顺序应该是什么?
另外,ChannelOutboundHandlerAdapter和ChannelInboundHandlerAdapter如何影响读取(I / O)和写入(I / O),应该在哪里使用?
请注意以下几点:
ChannelInboundHandler
处理各种入站数据和状态更改ChannelOutboundHandler
处理出站数据并允许拦截所有操作
例如,当一条消息传入时(即您正在从套接字读取数据时),将通知ChannelInboundHandler 。 此外,还会通知状态更改(如writabilityChanged,channelActive和Inactive事件)。
当您将数据写入通道时,将会通知ChannelOutboundHandler 。 通道上的连接,断开连接和读取等呼叫也将得到通知。
要实现编码器和解码器,您可以在网络中扩展预定义的解码器和编码器,例如ByteToMessageDecoder
, MessageToMessageDecoder
, MessageToByteEncoder
和MessageToMessageEncoder
因为这将简化您的任务。
关于解码器和编码器的执行顺序,请这样考虑:当消息通过套接字到达您的应用程序时,它将以字节流的形式出现,那么您将必须对其进行解码以进行处理。 在向外部各方发送消息时,必须先将其编码为字节,然后再将其写入套接字。 编码器和解码器的执行顺序取决于此过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.