Я использую Netty 3.X
.
У меня есть Netty
- ServerBootstrap
, работающий на порту 8080
.
Два клиента (ClientBootstrap
) хотят подключитьсяна тот же сервер - Client_A
и Client_B
.
Но проблема в том, что Client_A
отправляет ProtoBuff
сообщение типа ClientMsg
.И Client_B
отправляет ProtoBuff
тип сообщения ClientMsgTwo
.
Как мне обработать это на конвейере сервера?Я имею в виду - Как я могу добавить ProtobufDecoder
для ClientMsg
и ClientMsgTwo
.Что-то вроде -
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast("ProtobufVarint32FrameDecoder", new ProtobufVarint32FrameDecoder());
// ProtobufDecoder for ClientMsg
pipeline.addLast("ProtobufDecoder", new ProtobufDecoder(ClientMsgContainer.ClientMsg.getDefaultInstance()));
// ProtobufDecoder for ClientMsgTwo
pipeline.addLast("ProtobufDecoderTwo", new ProtobufDecoder(ClientMsgContainerTwo.ClientMsgTwo.getDefaultInstance()));
Чтобы сервер мог правильно обрабатывать оба сообщения ClientMsg
и ClientMsgTwo
?
Примечание. Использование ByteToMessageDecoder
не вариант, потому что нет способамы можем различать типы сообщений, читая несколько начальных байтов.