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