2014-05-06 25 views
3

在很多人我見過的例子,一個子集,客戶的利益,如StockTicker的應用程序,它假定所有的客戶有興趣更新至所有股票的價格......SignalR服務器更新與更新中

我試圖確定在客戶端只關心更新的子集的最佳實踐...

我會:

  1. 廣播的所有更新的所有客戶端,並且讓客戶在客戶端方法中確定 「如果他們關心」?
  2. 向每個客戶端連接註冊「 感興趣的項目」並在某處保持客戶端連接表, 反覆向所有表示 感興趣的客戶端廣播?
  3. 爲每個股票(例如)創建一個SignalR組,並 登記客戶「利益」每個特定的股票組和 相關 股票的更新過程中只播出某一特定羣體?
  4. 別的東西我失蹤...

在努力使這個問題更客觀,什麼是每個以上場景的陷阱(而不是「哪個你更喜歡?」) ?

感謝幫派。

回答

2

「如果要我:」

  1. 「播出的所有更新的所有客戶端,並且讓客戶決定,‘如果他們關心’在客戶端的方法?」

    此解決方案可能是最簡單的實施和原因。不幸的是,這個解決方案也創造了最多的網絡流量在一些發送消息是敏感的並且應該隱藏某些客戶端的情況下,它也可能被認爲是不安全的。

  2. 「與每個客戶端連接註冊了‘感興趣的項目’和地方保持一個客戶端連接表,反覆廣播到已經表示,所有感興趣的客戶呢?」

    這似乎非常相似SignalR羣體的概念,而是反覆播放,以個人客戶通常是不作爲廣播的一組高效。這主要是因爲SignalR只需要每組廣播發布一條消息到其總線。

    不過,你可能想即使你最終使用內置SignalR組的功能,以保持包含爲每個客戶端「感興趣的項目」一「客戶端連接表」。 SignalR只允許您將客戶端添加到組中或從組中刪除,並將其廣播到組中,因此,如果您想查找組中的哪些用戶,您需要自己跟蹤。

    如果你保持你自己的表,你能避免發送消息,你知道沒有客戶端是目前感興趣。你也可以自動當他們離開,然後回來重新訂閱客戶自己感興趣的項目。

  3. 「爲每一隻股票創建一個SignalR組,並將客戶註冊到每個」感興趣的「特定股票組,並在相關股票更新期間僅向特定組廣播?」

    這將是我的選擇。小組自然地對準「感興趣的項目」。鑑於你的情況,我沒有看到太多的不利之處,特別是如果你還維護自己的「客戶端連接表」。

  4. 「別的我錯過......」

    我想你負責的三個基本選項。

+0

如果我走羣路由,這是我的理解,如果一個組不存在,SignalR可以毫無例外地發送給它(這對我來說很好)。那是對的嗎?是否有可以同時存在的組數的上限? – Novox