Signalr transmitió IHubContext al Hub real
-
02-01-2020 - |
Pregunta
Me pregunto si es posible transmitir el resultado devar hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
A mi clase real de ChatHub.Porque GlobalHost.ConnectionManager.GetHubContext<ChatHub>() as ChatHub
falla
En mi clase ChatHub tengo un método UpdateTime():
public void SendTimeUpdate(DateTime time, string auth)
{
Clients.All.UpdateTime(time, auth);
}
Y quiero llamarlo desde mi otra clase.Como no puedo transmitir a ChatHub e invocar SendUpdate, tengo que ir:
GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.UpdateTime(time, auth);
Pero si sigo este camino, el método SendTimeUpdate no se agrega en el script proxy /signalr/hubs
¿Hay una solución para este problema?Quiero obtener la instancia de Hub escrita y no llamar a cosas directamente en la propiedad Clientes de IHubContext.
Solución
No, no puedes transmitir el resultado de ....GetHubContext<....
a su clase central.Lo siento :(.
El enfoque GetHubContext devuelve un IHubContext
cuando un Hub es sólo un IHub
.
Si desea centralizar la lógica, simplemente cree un método al que pueda llamar desde su centro y desde su servicio externo.
Otros consejos
¿No se pudo crear su clase una conexión a su centro y llamar al método de esa manera?