在SignalR中获取当前集线器 [英] Getting current hub in SignalR
本文介绍了在SignalR中获取当前集线器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有从控制器调用SignalR集线器中的方法的好方法?
现在我有这个:
public class StatsHub : Hub
{
private static readonly Lazy<StatsHub> instance = new Lazy<StatsHub>(() => new StatsHub());
public static StatsHub Instance { get { return instance.Value; } }
public StatsHub()
{
if (this.Clients == null)
{
var hubContext = SignalR.GlobalHost.ConnectionManager.GetHubContext<StatsHub>();
this.Clients = hubContext.Clients;
this.Groups = hubContext.Groups;
}
}
// methods here...
}
所以在我的控制器操作中,我只能说,例如
StatsHub.Instance.SendMessage("blah");
它几乎是好的,只是hubContext没有Hub的Caller或Context属性-这是很好的拥有属性。
希望有更好的方法?
推荐答案
找到DefaultHubManager,我想这正是我需要的。
DefaultHubManager hd = new DefaultHubManager(GlobalHost.DependencyResolver);
var hub = hd.ResolveHub("AdminHub") as AdminHub;
hub.SendMessage("woohoo");
有效。如果有更好的/首选的方式-请分享。
这篇关于在SignalR中获取当前集线器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文