我使用SignalR广播消息,我所有的客户。 我需要触发我的HUB类即类似下面外广播:
var broadcast = new chatHub(); broadcast.Send("Admin","stop the chat");
我收到错误消息:
使用不是由HubPipeline创建一个枢纽实例不受支持。
我使用SignalR广播消息,我所有的客户。 我需要触发我的HUB类即类似下面外广播:
var broadcast = new chatHub(); broadcast.Send("Admin","stop the chat");
我收到错误消息:
使用不是由HubPipeline创建一个枢纽实例不受支持。
您需要使用GetHubContext
:
var context = GlobalHost.ConnectionManager.GetHubContext<chatHub>();
context.Clients.All.Send("Admin", "stop the chat");
此进行更详细的描述在http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#callfromoutsidehub 。
一个小更新对于那些谁可能想知道的GlobalHost
已经一去不复返了。 SignalR已完全重写了.NET的核心。 所以,如果你使用的是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");
}
}
而在Startup.cs
:
services.AddSignalR()/*.AddAzureSignalR("...")*/;
微软实况是在这里: 从轮毂外发送SignalR的消息 。