簡體   English   中英

多個 websocket 連接

[英]Multiple websocket connections

從同一個客戶端到同一個服務器有兩個不同的 websocket 連接有什么好處嗎? 對我來說,這似乎是一個糟糕的設計選擇,但有什么理由為什么/在哪里應該做得更好?

可能想要這樣做的原因有幾個,但它們可能並不常見(至少現在還沒有):

  • 您有發送/接收的加密和未加密數據(例如,某些數據體積龐大但不敏感)。
  • 您同時擁有流數據和延遲敏感數據:想象一下偶爾會在游戲中播放視頻的互動游戲。 您不希望大型媒體流延遲接收對延遲敏感的正常游戲消息。
  • 你有文本(例如JSON控制消息)和二進制數據(類型化數組或blob),並且不想為添加自己的協議層而煩惱,因為WebSockets已經為你做了這個。
  • 您支持多個WebSocket子協議(URI之后的可選設置),並且頁面要訪問多個(每個WebSocket連接僅限於一個子協議)。
  • 您在同一個Web服務器和端口后面有幾個不同的WebSocket服務。 客戶端選擇每個連接的方式可能取決於URI路徑,URI方案(ws或wss),子協議,甚至可能是客戶端到服務器的第一條消息。

我確信還有其他原因,但這就是我能想到的全部。

我發現當你只訂閱服務器管理的某些對象的更新時,它可以使客戶端邏輯更簡單。 您可以只為每個元素打開一個套接字,而不是為單個通道設計自定義訂閱協議。

假設您通過REST API獲取了元素集合

http://myserver/api/some-elements

您可以使用套接字URL訂閱單個元素的更新,如下所示:

ws://myserver/api/some-elements/42/updates

當然,人們可以爭辯說,這不適用於復雜的頁面。 但是,對於小而簡單的應用程序,它可能會讓您的生活更輕松。

我目前正在尋找與同一websocket有兩個連接的解決方案。 我的原因:

  • 我在QUnit中編寫了一個測試用例,我想模擬多個客戶端並檢查不同的客戶端是否有正確的響應

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM