Nit*_*wal 78 signalr signalr-hub
我正在使用SignalR向所有客户广播消息.我需要在我的集线器类之外触发广播,如下所示:
var broadcast = new chatHub();
broadcast.Send("Admin","stop the chat");
我收到错误消息:
不支持使用不是由HubPipeline创建的Hub实例.
hal*_*r73 134
你需要使用GetHubContext:
var context = GlobalHost.ConnectionManager.GetHubContext<chatHub>();
context.Clients.All.Send("Admin", "stop the chat");
Run Code Online (Sandbox Code Playgroud)
这在http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#callfromoutsidehub中有更详细的描述.
对于那些可能想知道GlobalHost它去了哪里的人来说,这是一个小更新。SignalR 已针对 .net core 完全重写。因此,如果您正在使用 SignalR.Core 包(SignalR 版本之间的差异),您可以通过将它注入您的服务来获得 SignalR 集线器上下文的实例:
public class MyNeedyService
{
private readonly IHubContext<MyHub> ctx;
public MyNeedyService(IHubContext<MyHub> ctx)
{
this.ctx = ctx;
}
public async Task MyMethod()
{
await this.ctx.All.SendAsync("clientCall");
}
}
Run Code Online (Sandbox Code Playgroud)
并在Startup.cs:
services.AddSignalR()/*.AddAzureSignalR("...")*/;
Run Code Online (Sandbox Code Playgroud)
Microsoft 文档在这里:从集线器外部发送 SignalR 消息。
| 归档时间: |
|
| 查看次数: |
33463 次 |
| 最近记录: |