我正在使用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
,因为我们无法通过读取少量初始字节来区分消息类型。