Heim > Backend-Entwicklung > C++ > Wie kann ich SignalR-Hub-Methoden in ASP.NET Core-Controller integrieren?

Wie kann ich SignalR-Hub-Methoden in ASP.NET Core-Controller integrieren?

Barbara Streisand
Freigeben: 2025-01-05 04:20:40
Original
401 Leute haben es durchsucht

How Can I Integrate SignalR Hub Methods into ASP.NET Core Controllers?

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; }
Nach dem Login kopieren

Rufen Sie dann direkt Methoden auf allen Clients auf unter Verwendung von:

await this.HubContext.Clients.All.InvokeAsync("Completed", id);
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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" };
    }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage