Integration von SignalR-Hub-Methoden in ASP.NET-Core-Controller
Diese Untersuchung befasst sich mit der Integration von SignalR-Core-Hub-Methoden in ein ASP.NET Kerncontroller. Der spezifische Anwendungsfall besteht darin, nach Abschluss der Aufgabe eine Post-Anfrage von einem Windows-Dienst zu empfangen, der mit externen Programmen interagiert, und diese Informationen an verbundene SignalR-Clients zu senden.
Lösung 1: Direkter Zugriff auf HubContext
Injizieren Sie die IHubContext-Schnittstelle in den Controller:
public VarDesignCommController(IHubContext<VarDesignHub> hubcontext) { HubContext = hubcontext; ... } private IHubContext<VarDesignHub> HubContext { get; set; }
Rufen Sie dann direkt Methoden auf allen Clients auf unter Verwendung von:
await this.HubContext.Clients.All.InvokeAsync("Completed", id);
Dieser Ansatz führt Methoden auf allen verbundenen Clients aus und bietet so eine einfache und schnelle Lösung.
Lösung 2: Nutzung typisierter Hubs
Definieren Sie eine Schnittstelle zur Darstellung serverseitiger Methodenaufrufe auf Clients:
public interface ITypedHubClient { Task BroadcastMessage(string name, string message); }
Erstellen Sie einen Hub, der von erbt Hub
public class ChatHub : Hub<ITypedHubClient> { public void Send(string name, string message) { Clients.All.BroadcastMessage(name, message); } }
Injizieren Sie den typisierten Hub-Kontext und arbeiten Sie damit im Controller:
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" }; } }
Dieser Ansatz nutzt typisierte Hub-Clients, was eine bessere Kontrolle und Lesbarkeit ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich SignalR-Hub-Methoden in ASP.NET Core-Controller integrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!