SignalR Core Hub-Methode vom Controller aufrufen
In ASP.NET Core-Anwendungen ist es häufig erforderlich, mit SignalR-Hubs von Controllern zu kommunizieren Aktualisieren Sie clientseitige Anwendungen mit serverseitigen Ereignissen. Hier sind zwei Ansätze, um dies zu erreichen:
Lösung 1: Verwendung von untypisiertem HubContext
Mit dieser Methode können Sie Methoden direkt auf allen verbundenen Clients aufrufen. Fügen Sie den untypisierten IHubContext
public class VarDesignCommController : Controller { private readonly IHubContext<VarDesignHub> _hubContext; public VarDesignCommController(IHubContext<VarDesignHub> hubContext) { _hubContext = hubContext; } [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { await _hubContext.Clients.All.InvokeAsync("TaskCompleted", id); return new JsonResult(true); } }
Lösung 2: Verwendung typisierter Hubs und Schnittstellen
Dieser Ansatz verwendet typisierte Hubs und Schnittstellen, um clientseitige Methoden zu definieren, die aufgerufen werden können vom Controller.
Erstellen Sie eine Schnittstelle für den Hub client:
public interface ITypedHubClient { Task TaskCompleted(int id); }
Vom Hub erben
public class VarDesignHub : Hub<ITypedHubClient> { public async Task TaskCompleted(int id) { await Clients.All.InvokeAsync("Completed", id); } }
Injizieren Sie den typisierten Hub-Kontext in den Controller:
public class VarDesignCommController : Controller { private readonly IHubContext<VarDesignHub, ITypedHubClient> _hubContext; public VarDesignCommController(IHubContext<VarDesignHub, ITypedHubClient> hubContext) { _hubContext = hubContext; } [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { await _hubContext.Clients.All.TaskCompleted(id); return new JsonResult(true); } }
Das obige ist der detaillierte Inhalt vonWie kann ich eine SignalR Core Hub-Methode von einem ASP.NET Core Controller aus aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!