Maison > développement back-end > C++ > Comment appeler une méthode SignalR Hub à partir d'un contrôleur ASP.NET Core ?

Comment appeler une méthode SignalR Hub à partir d'un contrôleur ASP.NET Core ?

Susan Sarandon
Libérer: 2025-01-05 03:32:39
original
861 Les gens l'ont consulté

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

Appel de la méthode SignalR Core Hub à partir du contrôleur

SignalR Core fournit un puissant mécanisme de communication en temps réel pour les applications ASP.NET Core. Cet article aborde le scénario courant d'appel d'une méthode hub SignalR à partir d'un contrôleur.

L'exemple fourni démontre la nécessité de notifier les clients connectés à la fin d'une opération externe initiée à partir d'un service Windows. Étant donné que le service ne peut pas interagir directement avec SignalR, nous explorons deux solutions potentielles.

Solution 1 : Utiliser IHubContext

Injecter le IHubContext du hub souhaité dans le contrôleur :

public class VarDesignCommController : Controller
{
    public VarDesignCommController(IHubContext<VarDesignHub> hubcontext)
    {
        HubContext = hubcontext;
    }
    ...
}
Copier après la connexion

Ensuite, invoquez la méthode hub :

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

Solution 2 : Utilisation de Typed Hubs

Pour un contrôle plus granulaire, créez une interface client typée :

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

Héritez de la classe Hub et définissez la méthode côté client :

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

Injecter le contexte hub tapé et invoquez la méthode :

// In VarDesignCommController
[Route("api/demo")]
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

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