Maison > développement back-end > C++ > Comment puis-je intégrer les méthodes SignalR Hub dans les contrôleurs ASP.NET Core ?

Comment puis-je intégrer les méthodes SignalR Hub dans les contrôleurs ASP.NET Core ?

Barbara Streisand
Libérer: 2025-01-05 04:20:40
original
390 Les gens l'ont consulté

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

Intégration des méthodes SignalR Core Hub dans les contrôleurs ASP.NET Core

Cette enquête approfondit l'intégration des méthodes SignalR Core Hub dans un ASP.NET Contrôleur principal. Le cas d'utilisation spécifique consiste à recevoir une demande de publication d'un service Windows, qui interagit avec des programmes externes, une fois la tâche terminée, et à diffuser ces informations aux clients SignalR connectés.

Solution 1 : accéder directement à HubContext

Injectez l'interface IHubContext dans le contrôleur :

public VarDesignCommController(IHubContext<VarDesignHub> hubcontext)
{
    HubContext = hubcontext;
    ...
}

private IHubContext<VarDesignHub> HubContext
{ get; set; }
Copier après la connexion

Ensuite, appelez directement les méthodes sur tous les clients en utilisant :

await this.HubContext.Clients.All.InvokeAsync("Completed", id);
Copier après la connexion

Cette approche exécute des méthodes sur tous les clients connectés, fournissant une solution simple et rapide.

Solution 2 : exploiter les hubs typés

Définir une interface pour représenter les appels de méthodes côté serveur sur les clients :

public interface ITypedHubClient
{
    Task BroadcastMessage(string name, string message);
}
Copier après la connexion

Créer un Hub héritant de Hub :

public class ChatHub : Hub<ITypedHubClient>
{
    public void Send(string name, string message)
    {
        Clients.All.BroadcastMessage(name, message);
    }
}
Copier après la connexion

Injectez le contexte du hub typé et travaillez avec lui dans le contrôleur :

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" };
    }
}
Copier après la connexion

Cette approche utilise des clients hub typés, permettant un meilleur contrôle et une plus grande lisibilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal