コントローラーから SignalR Core Hub メソッドを呼び出す
ASP.NET Core アプリケーションでは、多くの場合、コントローラーから SignalR ハブと通信する必要があります。サーバー側のイベントでクライアント側のアプリケーションを更新します。これを実現するための 2 つのアプローチを次に示します。
解決策 1: 型なしの HubContext を使用する
この方法では、接続されているすべてのクライアントでメソッドを直接呼び出すことができます。型なしの IHubContext
public class VarDesignCommController : Controller { private readonly IHubContext<VarDesignHub> _hubContext; public VarDesignCommController(IHubContext<VarDesignHub> hubContext) { _hubContext = hubContext; } [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { await _hubContext.Clients.All.InvokeAsync("TaskCompleted", id); return new JsonResult(true); } }
解決策 2: 型付きハブとインターフェイスを使用する
このアプローチでは、型付きハブとインターフェイスを使用して、呼び出すことができるクライアント側のメソッドを定義します。コントローラーから。
ハブのインターフェイスを作成しますクライアント:
public interface ITypedHubClient { Task TaskCompleted(int id); }
ハブから継承
public class VarDesignHub : Hub<ITypedHubClient> { public async Task TaskCompleted(int id) { await Clients.All.InvokeAsync("Completed", id); } }
型指定されたハブ コンテキストをコントローラーに挿入します:
public class VarDesignCommController : Controller { private readonly IHubContext<VarDesignHub, ITypedHubClient> _hubContext; public VarDesignCommController(IHubContext<VarDesignHub, ITypedHubClient> hubContext) { _hubContext = hubContext; } [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { await _hubContext.Clients.All.TaskCompleted(id); return new JsonResult(true); } }
以上がASP.NET Core コントローラーから SignalR Core ハブ メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。