2012-01-08 50 views
1

WebSocket的例子具有一個http請求處理程序:如何在網狀處理不同(URL)WebSocket連接在網狀(示例)

  1. 進行手抖動(在第一)

  2. (然後)處理不同類型的WebSocket框架,最終是「TextWebSocketFrame」。

本例中只有一個用於websocket連接的url。

問題是,當基於TextWebSocketFrame的實際websocket通信開始時,沒有直接的方式從TextWebSocketFrames本身確定websocket url(糾正我,如果我錯了)。

那麼,如何在netty中處理不同的(url)websocket連接呢?

一個解決方案可以在握手過程中註冊通道及其「websocket連接URL」。

另一種方法是隻有一個websocket連接url,並通過向websocket消息(TextWebSocketFrames)添加額外信息來解決不同的上下文。

我沒有找到這些解決方案的優雅,所以任何想法?

回答

0

這是我的理解,當你執行一個web套接字握手,它是一個特定的URL。這是在網絡套接字標準中指定的。見RFC 6455。因此,TextWebSocketFrame中沒有URL信息,因爲假設框架將被髮送到套接字綁定的URL。

要處理不同的URL,你將不得不採取:

  1. 設置不同的油管並綁定到不同的IP和/或端口的每個網址,或
  2. 像你所說,自定義手搖動並存儲該頻道的網址。

就我個人而言,我剛剛在TextWebSocketFrame中使用了JSON。在我的JSON中,我有一個說明預期操作的字段。該字段用於路由到適當的消息處理程序。

我認爲這歸結於設計決定。 WebSocket專用於請求消息可以有0,1或> 1響應的長期連接。這與REST風格1請求和1響應模型形成了鮮明對比。

希望這會有所幫助。

+0

感謝您的答案和您在netty中的RFC 6455實現。我希望你們很快完成netty 3.3和4.0。 – 2012-01-08 22:18:43

+0

沒問題。它完成了對網絡套接字的編碼和(高速公路)測試。只是在等待發布。 – Veebs 2012-01-08 22:25:47