在SignalR中获取当前集线器 [英] Getting current hub in SignalR

查看:29
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆