我已经设置了一个SignalR hub,用于服务器和客户端之间的通信。Hub服务器端代码存储在名为Hooking.cs的类中。我想要的是能够调用在Hooking.cs中定义的方法,以便从我的应用程序的任何位置广播消息给任何连接的客户端。似乎每个客户端/服务器调用都会创建一个Hooking.cs的新实例,因此我希望我可以使用类似于下面这样的东西:
var hooking = new Hooking();
hooking.Test();
使用在Hooking.cs中定义的Test()方法,如下所示:
public static void Test() {
Clients.test()
}
同时使用客户端JavaScript
var hooking = $.connection.hooking;
hooking.test = function() { alert("test worked"); };
$.connection.hub.start()
很遗憾,这并不简单,因为Clients不是静态的,所以无法从静态方法中访问。浏览SignalR源代码时,我找到了一个看起来很有希望的方法,Hubs.Invoke(string hubName, string method, params object[] args)
,所以我希望我可以使用类似Hubs.Invoke("Hooking", "Test")
的东西,但我无法使其工作。如果有任何帮助,将不胜感激。