我正在尝试在Netty中混合使用TCP和WebSockets。 我有两台服务器,一台带有Websockets,另一台带有TCP。在DefaultUserGroup中收集的所有用户及其原因我不知道userGroup中的哪个用户来自WebSockets或TCP我无法正确写入它们(DefaultUserGroup.write)。
Websocket服务器:
ChannelPipeline pipeline = pipeline();
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("aggregator", new HttpChunkAggregator(65536));
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new WebSocketServerHandler(readQueueHandler));
TCP服务器:
pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));
pipeline.addLast("decoder", new StringDecoder());
pipeline.addLast("encoder", new StringEncoder());
pipeline.addLast("handler", new MyBusinessLogicHandler(readQueueHandler));
答案 0 :(得分:0)
如果DefaultUserGroup
是ChannelGroup
,为什么不只是制作两个不同的ChannelGroup,一个用于TCP,一个用于WS,并使用各自的帧写入两者。
或者,您可以创建一个POJO,其上标有一些标识通道类型的标志,然后在建立新连接时,实例化一个新的POJO,设置通道类型标志,并将其粘贴在通道的附件上({{ 1}})。然后您可以在写入之前检查频道类型,以确保正确格式化帧(channel.setAttachement(...)
)。