动态ChannelHandler来使用不同的协议



我想实现一个netty服务器,使用websocket子协议连接到浏览器客户端。我还希望其他一些客户端通过tcp连接与相同的子协议进行通信,因为它们没有浏览器,并且与服务器在同一机器/网络上。这会提高性能。

我的问题是,似乎不可能通过检测客户端使用的协议来添加ChannelHandler。是否有一种方法我找不到,或者我需要实现两个独立的服务器并与不同的端口连接?

  • 你要么使用2个不同的端口实现2个不同的ServerBootstrap,然后使用2个不同的协议
  • 要么你必须找到一种方法来检测哪种协议被使用的第一个消息,然后相应地动态调整你的管道:
    • 这将导致在你的管道中有一个"双向(或更多)协议"检测器,在你的管道中没有其他处理程序在第一时间
    • 那么这个检测器将根据第一个消息决定需要哪些处理程序,并将它们添加到管道中,将消息发送到下一个处理程序(新处理程序),并在消息被转发后从管道中删除自己

最新更新