有没有办法设置多个protobufEncoder / protobufDecoder?
让我解释一下我的问题。我有一个命令将从中发送 客户端到服务器,服务器获取命令并做一些工作 命令。现在服务器的响应(“回答”)可能是: 对于字符串的长度或对于整数方块(顺序不确定)
我现在的问题是:我能做些什么,客户至少可以收到两个 来自服务器的不同响应?两者都用Protobuf“编码” 反过来,我需要做的是服务器可以发送至少两个不同的 两个都是用Protobuf“编码”的。两个都是protobuf的“解码器”。
netty的ProtobufDecoder设置两个不同的protobufEncoder / Decoder是不可能的。
让我们看下面的netty示例,解码器只能接收解码器对象
LocalTimeServerPipelineFactory:
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline p = pipeline();
p.addLast("frameDecoder", new ProtobufVarint32FrameDecoder());
p.addLast("protobufDecoder", new ProtobufDecoder(LocalTimeProtocol.Locations.getDefaultInstance()));
p.addLast("frameEncoder", new ProtobufVarint32LengthFieldPrepender());
p.addLast("protobufEncoder", new ProtobufEncoder());
p.addLast("handler", new LocalTimeServerHandler());
return p;
}
提前感谢和最好的问候。
石英
答案 0 :(得分:0)
您可以动态调整ChannelPipeline。这应该对你有所帮助。只需在需要时添加/删除正确的。