netty 压缩自定义包

netty compress self defined package

我使用LengthFieldBasedFrameDecoder解码我的包,格式是:

| len(4 bytes) | cmd(2 bytes) | binary data(variable length which is the value of "len") |

cmd表示请求码,固定2个字节

有时候二进制数据可能太大,想压缩成:

| len(4 bytes) | cmd(2 bytes) | compressed data(cmd + binary data) |

len后面的cmd设置为常量值,如100,表示数据部分被压缩。

现在我在自己的包编码器处理程序中手工制作了这个。我想问一下这个可以通过ZlibEncoder这样的netty的handler来完成吗?

喜欢:

ch.pipeline().addLast(new MyPackageEncoder());
ch.pipeline().addLast(new ZlibEncoder());

但问题是,ZlibEncoder 会压缩包括 len 段在内的整个包数据,这是不需要的,否则数据的边界将丢失。

ZlibEncoder 不支持此功能。您将需要手动滚动自己的压缩编解码器。