Netty ByteBuf处理,管道中的decoders结构

Netty ByteBuf processing, decoders structure in the pipeline

我的服务器向客户端发送响应或将消息转发给另一个客户端取决于消息内容。 我需要使用 8 字节消息:大括号之间有 6 个加密字节,例如:

0x3C 0xE1 0xE2 0xE3 0xE04 0xE5 0xE6 0x3E

其中 0x3C 表示 < 符号作为开始帧标记,0x3E 表示 > 符号作为结束帧标记。

如果内部 6 个加密字节 (0xE1 0x02 0x03 0x04 0x05 0x06) 被成功解密,数据再次包含相同的标记:

0x3C 0x3C 0x02 0x03 0x04 0x05 0x3E 0x3E

所以我得到 4 个字节的有效负载 (0x02 0x03 0x04 0x05)。

我已经写了一个FrameDecoder,但是现在我不能决定是否去掉大括号字节:

我建议您将解密和转换拆分为两个处理程序。 第一个的职责只是解密原始数据。二是将原始数据转化为纯信息。这种解决方案的好处是,如果以后有人想更改解密方法,他只需更改第一个处理程序即可,而不会影响第二个处理程序。同样,变换方式也可以改变,不影响解密。