我正在實現一個Jetty Websocket servlet。 當服務器收到一個新連接時,我想發送一個消息,這個消息將被websocket的onopen函數讀取。我希望此消息僅在打開時發送,而不是使用常規的connection.SendMessage()函數。有可能這樣做嗎?如何?是否有可能在打開websocket連接時發送數據
21
A
回答
15
在協議中沒有這方面的支持,但你可以自己捏造一些東西。
- 當您的服務器完成握手時,存儲要傳遞給客戶端的初始消息。
- 在客戶端的
onopen
函數中,發送「讀取初始消息」請求。 - 在您的服務器中,檢查該客戶端是否未讀取其初始消息;迴應消息;設置一個標誌,說明最初的消息已經發送。
- 您的客戶端和服務器現在都可以自由發送其他消息。
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) –
相關問題
- 1. 檢查連接到websocket是否仍然打開Net :: Async :: WebSocket
- 2. 是否可以向客戶端發送WebSocket連接?
- 3. 客戶端連接並接收websocket數據但不能發送
- 4. 是否有可能在Silverlight中創建WebSocket連接?
- 5. 從Meteor.js打開Websocket連接
- 6. Websocket不會打開連接
- 7. 打開websocket連接firefox addon
- 8. 是否有可能從websocket連接訪問HTTP請求?
- 9. 是否可以通過WebSocket握手發送自定義數據?
- 10. 是否有可能將套接字打開無限時間
- 11. Android Lollipop中有可能打開/關閉數據連接?
- 12. 是否可以在打開連接之前檢查到SQL數據庫的連接是否存在?
- 13. 是否有可能沒有連接到數據庫的DataGridView?
- 14. 啓用數據連接不能打開
- 15. 是否有可能將clubbed數據發送到谷歌分析?
- 16. Cometd - Websocket打開/活動連接實時計數
- 17. Spring Websocket服務器在發送大量數據時重置連接
- 18. 檢查數據是否連續發送
- 19. 是否有可能使用python連接MySQL數據庫
- 20. 是否有可能通過PHP將.htaccess連接到數據庫
- 21. 在OleDb連接打開時發生SEHException
- 22. 是否有可能發出無法打開應用程序的推送通知
- 23. 防止在網絡連接不可用時發送UDP數據
- 24. Websocket能否從ajax接收數據?
- 25. 是否有可能知道一個串口在linux中是否連接/斷開?
- 26. Websocket連接在Shotgun服務器上未打開時關閉
- 27. .Net WebSocket Prototype ...在Javascript中打開連接時遇到問題
- 28. WebSocket不發送數據
- 29. gevent tcp socket已斷開連接但可以發送數據
- 30. WebSocket可以連接到本地服務器,但不能發送或接收
謝謝,我想知道如果我在網上搜索時可能錯過了一些東西。我會按照你所建議的方法。 – DPD