2014-06-19 39 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