动态ChannelHandler使用不同的协议

时间:2015-08-24 09:38:33

标签: java tcp websocket server netty

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

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

1 个答案:

答案 0 :(得分:0)

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