我使用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
段在内的整个包数据,这是不必要的,否则数据的边界将丢失。
答案 0 :(得分:0)
ZlibEncoder
不支持此功能。您将需要手动滚动自己的压缩编解码器。