簡體   English   中英

單頁Web應用程序是否應該與服務器保持一個Web Socket連接?

[英]Should a single-page web application keep one Web Socket connection to the server or several?

我正在開發一個將使用Web套接字的單頁Backbone應用程序。 該應用程序相當復雜,有6個或更多主要區域(屏幕)。

Web套接字的語法似乎很簡單,我現在想知道架構。

使用網絡套接字時,采用第一種方法或第二種方法是否最佳?

1 :在應用程序的任何屏幕或區域上為所有實時服務器通信打開單個websocket,然后在客戶端過濾這些消息?

要么...

2 :一次打開多個websockets,其中每個Web套接字代表應用程序中的某些功能區域

(我看過這個頁面,但它是關於服務器端的,我對客戶端感興趣: WebSocket服務器的最佳實踐是什么?

更新:服務器正在使用Jetty(一種與Tomcat不同的Java技術)。

我只打開一個連接,更容易管理。 為了簡化調試,您可以使用區域名稱命名所有事件。 socket.io也支持名稱空間,請參閱http://socket.io/#how-to-use “將自己限制在名稱空間”部分。

此外,如果您與websocket進行大量通信,可以使用Visibility API將其關閉,例如: https//developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API

不是你的問題的直接答案,但是,既然你說你在客戶端使用骨干,並假設你在服務器上使用節點(如果沒有,這可能是一個令人信服的論據),你可能會感興趣本文詳細討論了客戶端和(節點)服務器之間共享模型數據以同步狀態。 如果您不知道,Backbone可以作為模塊安裝在節點中。

由於您所描述的應用程序非常復雜,因此您可能會直接在客戶端和服務器之間共享相同的復雜模型。

暫無
暫無

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

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