SignalRを使用して、すべてのクライアントにメッセージをブロードキャストしています。ハブクラスの外部でブロードキャストをトリガーする必要があります。つまり、次のようになります。
var broadcast = new chatHub();
broadcast.Send("Admin","stop the chat");
次のようなエラーメッセージが表示されます。
HubPipelineによって作成されていないHubインスタンスの使用はサポートされていません。
SignalRを使用して、すべてのクライアントにメッセージをブロードキャストしています。ハブクラスの外部でブロードキャストをトリガーする必要があります。つまり、次のようになります。
var broadcast = new chatHub();
broadcast.Send("Admin","stop the chat");
次のようなエラーメッセージが表示されます。
HubPipelineによって作成されていないHubインスタンスの使用はサポートされていません。
あなたは使用する必要があります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("...")*/;
Microsoftのドキュメントはこちら:ハブの外部からSignalRメッセージを送信します。