Netty如何使用ByteToMessageCodec?
Netty how to use ByteToMessageCodec?
我的意图是为我收到的每条消息创建一个编解码器子类。例如,我有一个握手消息,所以我会有一个用于该握手消息的编解码器。我有另一个具体的消息,伴随着它自己的具体编解码器。
消息的 header 以操作码开头,我想知道,如果我不告诉它如何确定,Netty 将如何知道使用什么编解码器来解码字节缓冲区?
我想了几个方法,但none似乎有道理。我是否需要制作某种包含已解析 header 和未解析 body 的中间粗略消息?
但问题仍然存在,我如何 select 使用什么编解码器来解码 body?我是手动执行此操作(例如,使用我的编解码器实例数组,这对我来说没有意义)然后我会像 codecs[opcode]
一样访问,还是 Netty 有什么东西可以使这个 select离子对我来说?
通常的模式是在管道中有一个操作码解码处理程序。一旦解码器读取操作码并确定操作码映射到哪个消息处理程序,它就会将映射的消息处理程序添加到管道并删除自身。完成(或失败)时,操作码解码处理程序将被添加回管道并删除先前的消息处理程序。
我的意图是为我收到的每条消息创建一个编解码器子类。例如,我有一个握手消息,所以我会有一个用于该握手消息的编解码器。我有另一个具体的消息,伴随着它自己的具体编解码器。
消息的 header 以操作码开头,我想知道,如果我不告诉它如何确定,Netty 将如何知道使用什么编解码器来解码字节缓冲区?
我想了几个方法,但none似乎有道理。我是否需要制作某种包含已解析 header 和未解析 body 的中间粗略消息?
但问题仍然存在,我如何 select 使用什么编解码器来解码 body?我是手动执行此操作(例如,使用我的编解码器实例数组,这对我来说没有意义)然后我会像 codecs[opcode]
一样访问,还是 Netty 有什么东西可以使这个 select离子对我来说?
通常的模式是在管道中有一个操作码解码处理程序。一旦解码器读取操作码并确定操作码映射到哪个消息处理程序,它就会将映射的消息处理程序添加到管道并删除自身。完成(或失败)时,操作码解码处理程序将被添加回管道并删除先前的消息处理程序。