我想创建一个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
答案 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!");
}