82

SignalRを使用して、すべてのクライアントにメッセージをブロードキャストしています。ハブクラスの外部でブロードキャストをトリガーする必要があります。つまり、次のようになります。

var broadcast = new chatHub(); broadcast.Send("Admin","stop the chat");

次のようなエラーメッセージが表示されます。

HubPipelineによって作成されていないHubインスタンスの使用はサポートされていません。

4

2 に答える 2

144

あなたは使用する必要があります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で詳しく説明されています。

于 2013-02-28T05:39:01.177 に答える
5

どこに行ったのか疑問に思っている人のための小さなアップデート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メッセージを送信します

于 2018-10-12T06:54:20.183 に答える