从系统中的其他位置调用SignalR集线器客户端 - c#

我已经设置了SignalR集线器以在服务器和客户端之间进行通信。中心服务器端代码存储在名为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()

不幸的是,它不是那么简单,因为客户端不是静态的,因此不能从静态方法访问。

在查看SignalR源代码时,我遇到了一种看起来很有前途的方法Hubs.Invoke(string hubName, string method, params object[] args),所以我希望可以使用诸如Hubs.Invoke("Hooking", "Test")之类的方法,但我无法使其工作。

任何与此有关的帮助将不胜感激

参考方案

这是SignalR 2.x的正确方法:

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.All.addMessage(message);

基本上,您可以对当前主机使用依赖项解析器来解析IConnectionManager接口,该接口允许您获取集线器的上下文对象。

可以在official documentation中找到更多信息。

我的signalR客户端缺少什么基本组件? - javascript

遵循本教程:http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr我设法实现了一个非常非常简单的Signalr聊天客户端。即,一个广播从javascript发送给它的消息的集线器。很好,行得通。但是现在我试图用相同的index.html…

如何添加按钮并重定向到MVC4中的另一个视图? - javascript

我有一个疑问。我有一个称为CustomerMaster的视图。在CustomerMaster视图中,我有一个字段,例如'Area','City'等。如果城市已经在列表中,它将自动显示在Dropdown中。假设我需要的城市不在列表中,这意味着我必须添加该城市。因此,我决定在“城市”字段附近保留一个“添加”按钮。如果单击该按钮,则需要重定向到该视图。那么我该如何…

我可以使用C#将用户信息存储到本地存储中吗 - javascript

我正在一个网站上工作,目前每当用户登录时,我都在使用Cookie存储控制台使用的必要信息。当用户使用c#登录和注销时,我想将用户信息不仅从登录信息存储到cookie,而且还存储在本地存储密钥中。目前,我正在使用javascript将信息存储在本地存储中。但是使用c#可以实现相同的方法吗?请建议我一些方法。谢谢。 参考方案 C#在服务器上执行,而本地存储在客户…

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

重新连接的客户端SignalR没有收到消息 - javascript

我在作为服务运行的服务器上运行了SignalR Hub。由于任何原因,此服务器可能会因断电,正在更新(我们使用八达通自动更新)或其他原因而停止运行。如果我有一个用户连接到此服务,则将消息发送到服务器,然后将消息转发到传感器。然后,传感器将消息返回到服务器,然后转发到客户端Webapp。这在第一个连接上工作正常。如果服务在重新连接超时之前停止并重新启动,则我将…