创建中心实例SignalR 3

时间:2015-12-12 21:41:24

标签: asp.net signalr

我想创建一个Hub的实例,以便可以在所有客户端上调用方法。在Signalr 2中我会使用。

GlobalHost.ConnectionManager.GetHubContext<Hub>();

但这似乎在Signalr 3中缺失了,我尝试了以下但是我收到了一个错误。

IHubActivator.Create
Using a Hub instance not created by the HubPipeline is unsupported.

有人知道如何在SignalR 3中实现这一目标吗?

我正在使用signalr3 rc1

1 个答案:

答案 0 :(得分:2)

您可以使用依赖注入来解析实例;

public void MyController : Controller 
{
    public MyController(IHubContext<MyHub, IMyClient> context)
    {
        context.Clients.All.MyMethod("Hi there!"); // strongly typed 
    }

    // or

    public MyController(IHubContext<MyHub> context)
    {
        context.Clients.All.MyMethod("Hi there!"); // dynamic
    }
}

或手动;

public void Configure(IApplicationBuilder app) 
{
    var context = app.ApplicationServices.GetRequiredService<IHubContext<MyHub>>();
    context.Clients.All.MyMethod("Hi there!");
}