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
Barbara StreisandOriginal
2025-01-05 05:55:44761Durchsuche

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; }
}

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);
}

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();
    }
}

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!

Stellungnahme:
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