Heim >Backend-Entwicklung >C++ >Wie rufe ich SignalR Core Hub-Methoden von einem ASP.NET Core Controller auf?
SignalR Core Hub-Methoden vom Controller aufrufen
In ASP.NET Core-Anwendungen ist es manchmal notwendig, Hub-Methoden von einem Controller aufzurufen. Zum Beispiel, wenn externe Dienste Aufgaben ausführen und verbundene Clients über SignalR benachrichtigen müssen.
Lösung 1 (dynamisch)
Wenn Sie die Microsoft.AspNetCore.SignalR-Bibliothek verwenden (Version 1.0.0-alpha2-final) können Sie den IHubContext Ihres Hubs in Ihren Controller einfügen. Hier ist ein Beispiel:
[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; } }
Lösung 2 (typisiert)
Erwägen Sie die Erstellung einer Schnittstelle zum Definieren von Methoden, die der Server auf Client-Hubs aufrufen kann. Dieser Ansatz wird als „typisierte Hub-Endpunkte“ bezeichnet:
public interface ITypedHubClient { Task TaskCompleted(int id); } public class VarDesignHub : Hub<ITypedHubClient> { public Task TaskCompleted(int id) => Clients.All.InvokeAsync("Completed", id); }
Fügen Sie in Ihrem Controller den typisierten HubContext ein und rufen Sie Methoden auf:
[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(); } }
Das obige ist der detaillierte Inhalt vonWie rufe ich SignalR Core Hub-Methoden von einem ASP.NET Core Controller auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!