Heim >Backend-Entwicklung >C++ >Wie rufe ich eine SignalR-Hub-Methode von einem ASP.NET Core-Controller auf?
SignalR Core bietet einen leistungsstarken Echtzeit-Kommunikationsmechanismus für ASP.NET Core-Anwendungen. Dieser Artikel befasst sich mit dem häufigen Szenario des Aufrufs einer SignalR-Hub-Methode von einem Controller.
Das bereitgestellte Beispiel zeigt die Notwendigkeit, verbundene Clients über den Abschluss eines externen Vorgangs zu benachrichtigen, der von einem Windows-Dienst initiiert wurde. Da der Dienst nicht direkt mit SignalR interagieren kann, untersuchen wir zwei mögliche Lösungen.
Injizieren Sie den IHubContext für den gewünschten Hub in den Controller:
public class VarDesignCommController : Controller { public VarDesignCommController(IHubContext<VarDesignHub> hubcontext) { HubContext = hubcontext; } ... }
Dann rufen Sie die Hub-Methode auf:
await this.HubContext.Clients.All.InvokeAsync("Completed", id);
Für eine detailliertere Steuerung erstellen Sie eine typisierte Client-Schnittstelle:
public interface ITypedHubClient { Task BroadcastMessage(string name, string message); }
Von der Hub-Klasse erben und die clientseitige Methode definieren:
public class ChatHub : Hub<ITypedHubClient> { public void Send(string name, string message) { Clients.All.BroadcastMessage(name, message); } }
Inject Geben Sie den typisierten Hub-Kontext ein und rufen Sie die Methode auf:
// 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" }; } }
Das obige ist der detaillierte Inhalt vonWie rufe ich eine SignalR-Hub-Methode von einem ASP.NET Core-Controller auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!