Asp.net-Mvc
從控制器的操作中呼叫集線器方法
如何從控制器的操作中呼叫集線器方法?這樣做的正確方法是什麼?
有人在文章中使用了這個:
DefaultHubManager hd = new DefaultHubManager(GlobalHost.DependencyResolver); var hub = hd.ResolveHub("AdminHub") as AdminHub; hub.SendMessage("woohoo");但對我來說,這是拋出:
不支持使用不是由 HubPipeline 創建的 Hub 實例。
我還讀到您可以創建一個集線器上下文,但我不想對動作負責,也就是說,動作執行如下操作:
hubContext.Client(...).someJsMethod(..)
正確的方法是實際創建集線器上下文。如何以及在何處執行此操作取決於您,這裡有兩種方法:
- 在您的集線器中創建一個靜態方法(不必在您的集線器中,實際上可以在任何地方),然後您可以通過呼叫它
AdminHub.SendMessage("wooo")public static void SendMessage(string msg) { var hubContext = GlobalHost.ConnectionManager.GetHubContext<AdminHub>(); hubContext.Clients.All.foo(msg); }
- 完全避免使用靜態方法,直接發送到集線器客戶端
var hubContext = GlobalHost.ConnectionManager.GetHubContext<AdminHub>(); hubContext.Clients.All.foo(msg);