假设我们把解决粘包半包问题的常用三种解码器叫做一次解码器,那么我们在项目中,除了可选的压缩解压缩之外,还需要一层解码,因为一次解码的结果是字节,需要和项目中所使用的对象做转换,方便使用,这层解码器可以成为“二次解码器”,相应的,对应的编码器是为了将 Java 对象转化成字节流方便存储或传输。
一次解码器:ByteToMessageDecoder io.netty.buffer.ByteBuf(原始数据流) -> io.netty.buffer.ByteBuf(用户数据)
二次解码器: MessageToMessageDecoder<I> io.netty.buffer.ByteBuf(用户数据) -> Java Object
MessageToMessageDecoder<I>
MessageToMessageEncoder<I>