Mengintegrasikan Kaedah SignalR Hub ke dalam Pengawal Teras ASP.NET
Siasatan ini menyelidiki penyepaduan kaedah SignalR Core Hub dalam ASP.NET Pengawal teras. Kes penggunaan khusus melibatkan penerimaan permintaan pos daripada perkhidmatan Windows, yang berinteraksi dengan program luaran, selepas tugas selesai, dan menyiarkan maklumat ini kepada klien SignalR yang disambungkan.
Penyelesaian 1: Mengakses HubContext Secara Terus
Suntikan antara muka IHubContext ke dalam pengawal:
public VarDesignCommController(IHubContext<VarDesignHub> hubcontext) { HubContext = hubcontext; ... } private IHubContext<VarDesignHub> HubContext { get; set; }
Kemudian, panggil terus kaedah pada semua pelanggan menggunakan:
await this.HubContext.Clients.All.InvokeAsync("Completed", id);
Pendekatan ini melaksanakan kaedah pada semua pelanggan yang berkaitan, menyediakan penyelesaian yang mudah dan cepat.
Penyelesaian 2: Memanfaatkan Hab Ditaip
Tentukan antara muka untuk mewakili kaedah sisi pelayan memanggil pelanggan:
public interface ITypedHubClient { Task BroadcastMessage(string name, string message); }
Buat Hab yang diwarisi daripada Hub
public class ChatHub : Hub<ITypedHubClient> { public void Send(string name, string message) { Clients.All.BroadcastMessage(name, message); } }
Suntikan konteks hab yang ditaip dan gunakannya dalam pengawal:
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" }; } }
Pendekatan ini menggunakan pelanggan hab bertaip, membolehkan kawalan yang lebih besar dan kebolehbacaan.
Atas ialah kandungan terperinci Bagaimanakah saya Boleh Mengintegrasikan Kaedah Hub SignalR ke dalam Pengawal Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!