如何在netty中处理不同的(url)websocket连接

时间:2012-01-08 15:37:50

标签: websocket netty

netty中的Websocket示例(示例)有一个http请求处理程序:

  1. 执行握手(首先)

  2. (然后)处理不同类型的WebSocket框架,最终处理“TextWebSocketFrame”。

  3. 此示例中只有一个用于websocket连接的URL。

    问题是,当基于TextWebSocketFrame的实际websocket通信开始时,没有直接的方法来确定来自TextWebSocketFrames本身的websocket url(如果我错了,请纠正我)。

    那么,如何在netty中处理不同的(url)websocket连接?

    一种解决方案是在握手过程中注册频道及其“websocket连接网址”。

    另一个只有一个websocket连接URL并通过向websocket消息添加额外信息(TextWebSocketFrames)来解析不同的上下文。

    我没有发现这些解决方案优雅,所以任何想法?

1 个答案:

答案 0 :(得分:1)

据我了解,当您执行Web套接字握手时,它是指特定的URL。这是在Web套接字标准中指定的。见RFC 6455。因此,TextWebSocketFrame中没有URL信息,因为假设帧将被发送到套接字绑定的URL。

要处理不同的网址,您必须:

  1. 设置不同的管道并绑定到每个URL的不同IP和/或端口,或
  2. 如您所说,自定义握手并将URL存储在频道中。
  3. 就个人而言,我刚刚在TextWebSocketFrame中使用了JSON。在我的JSON中,我有一个声明预期动作的字段。该字段用于路由到适当的消息处理程序。

    我认为这取决于设计决策。 WebSockets用于长期存在的连接,其中请求消息可以具有0,1或> 1回复。这与REST样式1请求和1个响应模型形成对比。

    希望这有帮助。