2014-06-19 61 views
0

如何在集線器類之外獲得SignalR呼叫者?首先我實現上下文,但不能檢索調用者或連接ID。在SignalR中獲取呼叫者

private readonly IHubContext _hubContext; 

    public HomeController() 
    { 
     _hubContext = GlobalHost.ConnectionManager.GetHubContext<ProgressHub>(); 
    } 

ConnectionId屬性也無法從HomeController訪問。

public class ProgressHub : Hub 
{ 
    public string ConnectionId { get; set; } 
    public override Task OnConnected() 
    { 
     ConnectionId = Context.ConnectionId; 
     return base.OnConnected(); 
    } 
} 

終於有客戶 var id = $.connection.hub.id;

回答

0

你不能試圖接入集線器錯誤。想一想:在任何情況下,你怎麼可能從樞紐外面找回呼叫者?您可能正在通過SignalR沒有完成的呼叫,因此在這種情況下您不能有呼叫者。 IHubContext必須涵蓋所有情況,因此它不能提供這樣的選項。

+0

例如,我在客戶端上有一個事件,如按鈕單擊,然後像「c96b4106-9986-4786-a755-eedccd204c79」一樣檢索connectionid併發送到HomeController。爲什麼我不能在這種情況下加入特定的連接?只有全部或組是可能的,沒有變種? – Buratino

+0

這是不同的,那不是呼叫者,而是一個特定的連接。在這種情況下,您可以使用客戶端的客戶端成員 - http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.hubs.ihubconnectioncontext.client(v=vs.118).aspx – Wasp

+0

可以你建議任何來源如何建立簡單的進度條? – Buratino