


Wie rufe ich SignalR Core Hub-Methoden von einem ASP.NET Core Controller auf?
Jan 05, 2025 pm 01:47 PMSignalR Core Hub-Methoden vom Asp.Net Core Controller aufrufen
In diesem Artikel erfahren Sie, wie Sie SignalR Core Hub-Methoden aufrufen aus einem ASP.NET Core-Controller heraus. Diese Funktionalität ermöglicht die serverseitige Kommunikation mit verbundenen Clients, um Ereignisse zu übertragen oder Echtzeitdaten zu aktualisieren.
Problemübersicht
Im bereitgestellten Szenario ein ASP.NET Die Kernanwendung empfängt nach Abschluss der Aufgabe eine Anfrage von einem Windows-Dienst. Die Aufgabe besteht darin, alle verbundenen SignalR Core-Clients über dieses Ereignis zu benachrichtigen. Allerdings kann der Windows-Dienst keine direkte Verbindung zu SignalR herstellen.
Lösung 1: HubContext in Controller einfügen
Ein Ansatz besteht darin, den entsprechenden HubContext in die Controller-Klasse einzufügen . Dies ermöglicht den direkten Aufruf von Hub-Methoden aus den Aktionsmethoden des Controllers.
[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; } }
Dieser Ansatz ermöglicht die direkte Kommunikation mit allen verbundenen Clients, kann jedoch je nach Anzahl der Clients Auswirkungen auf die Leistung haben.
Lösung 2: Typisierte Hubs und Client-Schnittstellen
Ein anderer Ansatz besteht darin, eine typisierte Client-Schnittstelle zu definieren und von dieser zu erben der entsprechende Hub mit der typisierten Client-Schnittstelle. Dies ermöglicht die Injektion des typisierten HubContext in den Controller für bestimmte Methodenaufrufe.
Typisierte Client-Schnittstelle:
public interface ITypedHubClient { Task BroadcastMessage(string name, string message); }
Hub erbt von der typisierten Client-Schnittstelle :
public class ChatHub : Hub<ITypedHubClient> { public void Send(string name, string message) { Clients.All.BroadcastMessage(name, message); } }
Controller-Injektion und Methode Aufruf:
[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" }; } }
Dieser Ansatz ermöglicht eine gezieltere und effizientere Kommunikation mit Kunden.
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
