2012-08-30 51 views
21

我正在實現一個Jetty Websocket servlet。 當服務器收到一個新連接時,我想發送一個消息,這個消息將被websocket的onopen函數讀取。我希望此消息僅在打開時發送,而不是使用常規的connection.SendMessage()函數。有可能這樣做嗎?如何?是否有可能在打開websocket連接時發送數據

回答

15

在協議中沒有這方面的支持,但你可以自己捏造一些東西。

  • 當您的服務器完成握手時,存儲要傳遞給客戶端的初始消息。
  • 在客戶端的onopen函數中,發送「讀取初始消息」請求。
  • 在您的服務器中,檢查該客戶端是否未讀取其初始消息;迴應消息;設置一個標誌,說明最初的消息已經發送。
  • 您的客戶端和服務器現在都可以自由發送其他消息。
+0

謝謝,我想知道如果我在網上搜索時可能錯過了一些東西。我會按照你所建議的方法。 – DPD

34

不要忘記查詢字符串。它在WebSocket url中有效。

new Websocket('ws://yoursite.com/path?a=1&b=2&c=3') 

然後,您可以輕鬆地解析服務器端的這個網址來檢索數據。

+0

亞,但你如何解析服務器端的網址?網址本身在哪裏可用? –

+0

應該也許應該提到一個@PathParam的選項...參見[這個答案](https://stackoverflow.com/questions/21559260/how-do-i-pass-a-parameter-to-the-onopen-方法與 - jee7-的WebSockets) –

相關問題