1

複数の protobufEncoder/protobufDecoder を設定する方法はありますか?

私の問題を説明させてください。クライアントからサーバーに送信されるコマンドがあります。サーバーはコマンドを取得し、コマンドに従って何らかの作業を行います。サーバーの応答 (「回答」) は次のようになります。文字列の長さまたは整数の正方形 (順序は不明)

私の質問は次のとおりです。クライアントがサーバーから少なくとも2つの異なる応答を受信できるようにするにはどうすればよいですか? どちらも Protobuf で「エンコード」されています。次に、サーバーが少なくとも 2 つの異なる応答を送信できるようにするために必要なことは何ですか?また、両方とも Protobuf で「エンコード」されています。

netty の ProtobufDecoder は、2 つの異なる 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 に答える