有什么方法可以设置多个 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;
}
提前致谢并致以最诚挚的问候。
石英