SignalR Hub メソッドの ASP.NET Core コントローラーへの統合
この調査では、ASP.NET 内での SignalR Core Hub メソッドの統合について詳しく説明します。コアコントローラー。具体的な使用例には、タスク完了時に外部プログラムと対話する Windows サービスからポスト リクエストを受信し、接続されている SignalR クライアントにこの情報をブロードキャストすることが含まれます。
解決策 1: HubContext に直接アクセスする
IHubContext インターフェイスをコントローラー:
public VarDesignCommController(IHubContext<VarDesignHub> hubcontext) { HubContext = hubcontext; ... } private IHubContext<VarDesignHub> HubContext { get; set; }
次に、以下を使用してすべてのクライアントでメソッドを直接呼び出します:
await this.HubContext.Clients.All.InvokeAsync("Completed", id);
このアプローチでは、接続されているすべてのクライアントでメソッドが実行され、シンプルで迅速なソリューションが提供されます。
解決策 2: 型付きハブの活用
インターフェイスを定義するクライアントでのサーバー側のメソッド呼び出しを表現するには:
public interface ITypedHubClient { Task BroadcastMessage(string name, string message); }
Hub から継承するハブを作成します
public class ChatHub : Hub<ITypedHubClient> { public void Send(string name, string message) { Clients.All.BroadcastMessage(name, message); } }
型指定されたハブ コンテキストを挿入し、コントローラーでそれを操作します:
public class DemoController : Controller { IHubContext<ChatHub, ITypedHubClient> _chatHubContext; public DemoController(IHubContext<ChatHub, ITypedHubClient> chatHubContext) { _chatHubContext = chatHubContext; } [HttpGet] public IEnumerable<string> Get() { _chatHubContext.Clients.All.BroadcastMessage("test", "test"); return new string[] { "value1", "value2" }; } }
このアプローチでは、型付きハブ クライアントを利用し、より優れた制御と読みやすさ。
以上がSignalR Hub メソッドを ASP.NET Core コントローラーに統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。