簡體   English   中英

從AngularJS客戶端到一個SignalR集線器的多個連接

[英]Multiple connections to one SignalR hub from AngularJS client

我有一個AngularJS應用程序。 假設我對不同的控制器有不同的看法。 在每個控制器中,我想使用來自同一SignalR服務器中心的數據。

什么是管理集線器連接的最佳實踐:

  • 我開始與每個控制器中的集線器建立新的連接( connection.start() )。 到同一集線器有多個連接是否有問題?
  • 我在初始化應用程序后就打開了與集線器的連接,然后可以在控制器中使用這些連接。

當我在當前視圖中不使用集線器的數據時,應該關閉連接,而在返回視圖時是否重新打開連接? 或者即使我不是每次都使用所有連接,打開多個連接沒有問題嗎?

根據SignalR的文檔,它將使用相同的連接,因為它是相同的客戶端。 但是,您描述它的方式,在每個控制器上重新創建connection.start可能不是我建議的方式。

我實現了這樣的東西: https : //dzone.com/articles/better-way-using-aspnet

它具有服務,並使用$ scope。$ parent。$ on('',function(){}); 在每個控制器中。 這還允許您僅在您關心的每個控制器上觀看某些事件。 並讓服務監視所有內容並將事件“發送”到關心的控制器。 您將在控制器底部調用{signalrservicename} .intialize(),如該文章所述。 與角度控制器共享“數據”的最有效和最佳方法是

1)使用$ rootScope。$ emit(如本文所述)以及服務或

2)僅使用共享應用程序所有事件的一項服務,而不使用$ rootScope。$ emit。 這將要求您的服務對每個控制器都有“廣泛的知識”,而這有時是不切實際的。

如果使用websocket將數據從服務器發送到客戶端,則應保持連接打開。

如果要限制從同一會話到服務器的連接數,則可以從同一應用程序創建一個連接,並將數據存儲到$ rootscope中,然后每個控制器可以監視全局變量並從中獲取信息,如果他們在聽同樣的變化。 否則我認為有多個連接是可以的。

暫無
暫無

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

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