Heim > Backend-Entwicklung > C++ > Wie kann ich eine SignalR Core Hub-Methode von einem ASP.NET Core Controller aus aufrufen?

Wie kann ich eine SignalR Core Hub-Methode von einem ASP.NET Core Controller aus aufrufen?

Patricia Arquette
Freigeben: 2025-01-04 09:13:34
Original
870 Leute haben es durchsucht

How Can I Call a SignalR Core Hub Method from an ASP.NET Core Controller?

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 ein. in Ihren Controller:

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

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

Vom Hub erben mit der typisierten Client-Schnittstelle:

public class VarDesignHub : Hub<ITypedHubClient>
{
    public async Task TaskCompleted(int id)
    {
        await Clients.All.InvokeAsync("Completed", id);
    }
}
Nach dem Login kopieren

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

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!

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