2015-12-17 45 views
1

我想使用signalR作爲消息系統更新網頁上的進度條等 - 我需要能夠將progess(或任何消息)隔離到特定頁面。隔離SignalR請求

IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<InventoryHub>(); 

消息像>>hubContext.Clients.All.InitialiseProgress(inventoryData.Count());

顯然這個問題是Clients.All - 我只是不知道如何電線它,這樣,當它從服務器向客戶端發送回 - 它僅發送到頁面它被稱爲。我無法繞過connectionid

請幫助:-)

+0

「我只是不知道如何電線它了這麼當它從服務器發送回客戶端 - 它只發送到它被調用的頁面 - 「我假設這意味着你已經遇到'Clients.Caller',這不足以滿足你的需求? –

+0

聽起來像是正確的 - 我只是看不到如何實現它。 例如,我使用hubContext.Clients.All.InitialiseProgress(inventoryData.Count()); - 但沒有Clients.Caller ....? –

回答

0

您可以使用SignalR組向特定頁面廣播進度消息。

Working with Groups in SignalR

添加一個連接ID的一組:

public class ContosoChatHub : Hub 
{ 
    public Task JoinRoom(string roomName) 
    { 
     return Groups.Add(Context.ConnectionId, roomName); 
    } 

    public Task LeaveRoom(string roomName) 
    { 
     return Groups.Remove(Context.ConnectionId, roomName); 
    } 
} 

廣播到特定的組:

Clients.Group(groupName).addChatMessage(name, message); 
+0

太棒了..但我想使用Clients.Caller - 我只是不知道如何實例化集線器,讓我可以使用它..? –

+0

我只是做了一些測試,我認爲'Clients.Caller'在集線器本身之外是不可用的,在你的情況下'InventoryHub'。 「組」是,但如果你真的反對使用組,你必須對連接ID進行一些其他類型的頁面標識查找。 – Matt