2014-12-30 80 views
0

自定義組我有一箇中心服務器將郵件發送到我的客戶。發送郵件使用SignalR

我的客戶可以屬於一個組(我已經定義)和該組可以不變的變化。

我存儲在字典類此組列表。

在我將消息發送到每個客戶seperately這樣的時刻:

var myListA = 'get all clients from a collection that belongs to Group A' 

當時我:

foreach (string hubUserId in myListA) 
{ 
    context.Clients.Client(hubUserId).broadcastMessage('some data'); 
} 

理想的情況下,我想做到這一點:

var myListA = 'get all clients from a collection that belongs to Group A' 
context.Clients.Group(myListA).broadcastMessage('some data'); 

但是,這需要我使用/創建Hub組。我的團隊是外部的,並且是我的代碼/應用程序的其他部分的土着。

有沒有辦法做到這一點呢?

感謝

+1

很明顯,如果你沒有設置任何實際的SignalR組,你不能使用'Clients.Group()',所以你可能必須堅持你所擁有的。你所能做的就是把你在擴展方法中得到的東西包裝起來,使你的應用代碼更清潔 – Rhumborl

+0

@Rhumborl嗨,謝謝你的評論/時間。這也是我所設想的。只是希望比我的腦海裏有更多的人能夠想辦法做到這一點。謝謝:) –

回答

1

SignalR組使用發佈 - 訂閱模式您將有您的應用程序組同步到中心組工作。客戶端連接時,從您的字典/數據庫加載其組名,並將其分配給集線器組。當其組成員身份發生更改時,請相應地更新集線器組。

查找此over here的更多信息。

+0

你好,是的,這就是我一直在尋找了。我得到的問題是,當集線器客戶端第一次連接時,它不屬於任何組。集團的名稱由用戶決定,可以隨時完成,並且可以隨時更改。我創建了一個字典類來處理這個邏輯。然後,我必須將客戶從以前的任何組中移除並分配給新的組。但是,我將不得不在「正常」Hub類之外處理這個問題,我需要以某種方式檢查用戶/客戶端是否已經存在於先前的組中。一切都非常凌亂,我來處理... –

+0

謝謝你的鏈接+1 –