Netty如何使用ByteToMessageCodec?

时间:2017-06-29 22:01:01

标签: java netty

我的目的是为我拥有的每条消息创建一个编解码器子类。例如,我有一个握手消息,所以我会有一个用于所述握手消息的编解码器。我有另一个具体的信息,并附有自己的具体编解码器。

消息的标题以操作码开头,我想知道,如果我不告诉它如何确定,那么Netty将如何知道用于解码字节缓冲区的编解码器?

我想到了一些方法,但似乎没有任何意义。我是否需要制作某种包含已解析标题和未解析主体的中间粗略消息?

但问题仍然存在,如何选择用于解码身体的编解码器?我是否手动执行此操作(例如,我的编解码器实例数组,这对我来说没有意义),然后我会像codecs[opcode]那样访问,或者Netty是否有东西为我做这个选择?< / p>

1 个答案:

答案 0 :(得分:2)

通常的模式是在管道中有一个操作码解码处理程序。一旦解码器读取操作码并确定操作码映射到哪个消息处理程序,它就会将映射的消息处理程序添加到管道并自行删除。完成(或失败)后,操作码解码处理程序将被添加回管道并删除先前的消息处理程序。