netty compress自定义包

时间:2018-11-08 03:07:30

标签: java netty

我使用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) |

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

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

赞:

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

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

1 个答案:

答案 0 :(得分:0)

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