SignalR Core は、ASP.NET Core アプリケーションに強力なリアルタイム通信メカニズムを提供します。この記事では、コントローラーから SignalR ハブ メソッドを呼び出す一般的なシナリオについて説明します。
提供された例は、Windows サービスから開始された外部操作の完了時に接続されたクライアントに通知する必要性を示しています。サービスは SignalR と直接対話できないため、2 つの潜在的なソリューションを検討します。
目的のハブの IHubContext をコントローラーに挿入します:
public class VarDesignCommController : Controller { public VarDesignCommController(IHubContext<VarDesignHub> hubcontext) { HubContext = hubcontext; } ... }
次に、ハブ メソッドを呼び出します:
await this.HubContext.Clients.All.InvokeAsync("Completed", id);
より詳細に制御するには、型付きクライアント インターフェイスを作成します:
public interface ITypedHubClient { Task BroadcastMessage(string name, string message); }
ハブ クラスから継承し、クライアント側メソッドを定義します:
public class ChatHub : Hub<ITypedHubClient> { public void Send(string name, string message) { Clients.All.BroadcastMessage(name, message); } }
型指定されたハブ コンテキストを挿入し、メソッドを呼び出します:
// In VarDesignCommController [Route("api/demo")] 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" }; } }
以上がASP.NET Core コントローラーから SignalR Hub メソッドを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。