Menggunakan Kaedah Hab Teras SignalR daripada Pengawal
Dalam aplikasi Teras ASP.NET, kadangkala perlu menggunakan kaedah Hab daripada pengawal. Contohnya, apabila perkhidmatan luaran melaksanakan tugas dan perlu memberitahu pelanggan yang disambungkan melalui SignalR.
Penyelesaian 1 (Dinamik)
Jika anda menggunakan perpustakaan Microsoft.AspNetCore.SignalR (versi 1.0.0-alpha2-final), anda boleh menyuntik IHubContext Hab anda ke dalam pengawal anda. Berikut ialah contoh:
[Route("API/vardesigncomm")] public class VarDesignCommController : Controller { [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { await this.HubContext.Clients.All.InvokeAsync("Completed", id); return new JsonResult(true); } private IHubContext<VarDesignHub> HubContext { get; set; } }
Penyelesaian 2 (Ditaip)
Pertimbangkan untuk mencipta antara muka untuk menentukan kaedah yang boleh digunakan oleh pelayan pada hab klien. Pendekatan ini dikenali sebagai "titik akhir hab ditaip":
public interface ITypedHubClient { Task TaskCompleted(int id); } public class VarDesignHub : Hub<ITypedHubClient> { public Task TaskCompleted(int id) => Clients.All.InvokeAsync("Completed", id); }
Dalam pengawal anda, masukkan HubContext yang ditaip dan gunakan kaedah:
[Route("API/demo")] public class DemoController : Controller { private IHubContext<VarDesignHub, ITypedHubClient> _chatHubContext; public DemoController(IHubContext<VarDesignHub, ITypedHubClient> chatHubContext) { _chatHubContext = chatHubContext; } [HttpGet] public IActionResult TaskCompleted(int id) { _chatHubContext.Clients.All.TaskCompleted(id); return Ok(); } }
Atas ialah kandungan terperinci Bagaimana untuk Mendapat Kaedah Hab Teras SignalR daripada Pengawal Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!