Estoy usando SignalR para transmitir mensajes a todos mis clientes. Necesito activar la transmisión fuera de mi clase central, es decir, algo como a continuación:
var broadcast = new chatHub();
broadcast.Send("Admin","stop the chat");
Recibo un mensaje de error como:
No se admite el uso de una instancia de Hub no creada por HubPipeline.
signalr
signalr-hub
Nitin Agrawal
fuente
fuente
GetHubContext
no hay ningún llamador, ya que está destinado a utilizarse fuera de un Hub.Clients.All
debe dirigirse a todos los clientes que están actualmente conectados al Hub.IHubContext
. No puede usar esto para llamar a métodos de concentrador.context.Clients.All.broadcastMessage("Admin", "stop the chat");
use broadcastMessage en lugar de Send.Una pequeña actualización para aquellos que se pregunten dónde se
GlobalHost
ha ido. SignalR ha sido completamente reescrito para .net core. Entonces, si está utilizando el paquete SignalR.Core ( Diferencia entre las versiones de SignalR ), obtiene una instancia del contexto del concentrador de SignalR al inyectarlo en su servicio:Y en
Startup.cs
:Microsoft docu está aquí: envíe mensajes de SignalR desde fuera del concentrador .
fuente