1

有什么方法可以设置多个 protobufEncoder/protobufDecoder?

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

我现在的问题是:我该怎么做才能让客户端至少从服务器接收到两个不同的响应?两者都是用 Protobuf “编码”的。反过来,我需要做什么才能使服务器至少发送两个不同的响应?而且两者都是用 Protobuf “编码”的。两者都是用 protobuf 的“解码器”。

netty 的 ProtobufDecoder 设置两个不同的 protobufEncoder/Decoder 是不可能的。

让我们看看下面的netty例子,decoder只能接收一个decoder对象

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;
}

提前致谢并致以最诚挚的问候。

石英

4

1 回答 1

0

您可以即时调整 ChannelPipeline。这应该可以帮助你。只需在需要时添加/删除正确的。

于 2012-08-17T06:08:55.833 回答