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
不支持此功能。您将需要手动滚动自己的压缩编解码器。
我使用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
不支持此功能。您将需要手动滚动自己的压缩编解码器。