asp.net mvc - tutorial - Llamar a un método concentrador desde la acción de un controlador
webform mvc (1)
¿Cómo puedo llamar a un método concentrador desde la acción de un controlador? ¿Cuál es la forma correcta de hacer esto?
Alguien usó esto en una publicación:
DefaultHubManager hd = new DefaultHubManager(GlobalHost.DependencyResolver);
var hub = hd.ResolveHub("AdminHub") as AdminHub;
hub.SendMessage("woohoo");
Pero para mí, eso es arrojar:
No se admite el uso de una instancia de Hub no creada por HubPipeline.
También he leído que puedes crear un contexto central, pero no quiero dar la responsabilidad a la acción, es decir, la acción haciendo cosas como estas:
hubContext.Client(...).someJsMethod(..)
La forma correcta es crear realmente el contexto del centro. Cómo y dónde lo hace depende de usted, aquí hay dos enfoques:
Cree un método estático en su concentrador (no tiene que estar en su concentrador, podría estar en cualquier lugar) y luego simplemente puede llamarlo a través de
AdminHub.SendMessage("wooo")
public static void SendMessage(string msg) { var hubContext = GlobalHost.ConnectionManager.GetHubContext<AdminHub>(); hubContext.Clients.All.foo(msg); }
Evite el método estático todos juntos y simplemente envíelo directamente a los clientes de hubs
var hubContext = GlobalHost.ConnectionManager.GetHubContext<AdminHub>(); hubContext.Clients.All.foo(msg);