Protocol buffers Protobuf和管道问题

Protocol buffers Protobuf和管道问题,protocol-buffers,netty,Protocol Buffers,Netty,有没有办法设置多个protobufEncoder/protobufDecoder 让我解释一下我的问题。我有一个命令将从 客户端到服务器端,服务器端得到命令并根据命令做一些工作 现在服务器的响应(“应答”)可以是: 表示字符串长度,或表示整数平方(顺序不确定) 我现在的问题是:我该怎么做才能让客户至少收到两份 来自服务器的不同响应?两者都是用Protobuf“编码”的 反过来,我需要做的是,服务器可以发送至少两个不同的 响应?也都是用Protobuf“编码”的。都是用Protobuf“解码”的

有没有办法设置多个protobufEncoder/protobufDecoder

让我解释一下我的问题。我有一个命令将从 客户端到服务器端,服务器端得到命令并根据命令做一些工作 现在服务器的响应(“应答”)可以是: 表示字符串长度,或表示整数平方(顺序不确定)

我现在的问题是:我该怎么做才能让客户至少收到两份 来自服务器的不同响应?两者都是用Protobuf“编码”的 反过来,我需要做的是,服务器可以发送至少两个不同的 响应?也都是用Protobuf“编码”的。都是用Protobuf“解码”的

netty的ProtobufDecoder无法设置两个不同的protobufEncoder/解码器

让我们看看下面的网络示例,解码器只能接收一个解码器对象

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;
}
提前感谢并致以最良好的问候


quartz

您可以动态调整通道管道。这应该对你有帮助。只要在需要时添加/删除正确的协议即可。

如果我使用信封协议包装protobuf消息。例如:。添加编码器和解码器,其目的是为protobufEncoder和protobufDecoder添加消息头。你感觉怎么样?