Heim > Backend-Entwicklung > C++ > Wie rufe ich SignalR Core Hub-Methoden von einem ASP.NET Core Controller auf?

Wie rufe ich SignalR Core Hub-Methoden von einem ASP.NET Core Controller auf?

Barbara Streisand
Freigeben: 2025-01-05 05:55:44
Original
767 Leute haben es durchsucht

How to Invoke SignalR Core Hub Methods from an ASP.NET Core Controller?

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

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

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

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!

Quelle:php.cn
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