c# - 从系统中的其他地方调用 SignalR hub 客户端

标签 c# javascript asp.net-mvc signalr signalr-hub

我已经设置了一个 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()

不幸的是,它并没有那么简单,因为 Clients 不是静态的,所以不能通过静态方法访问。

通过查看 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 接口(interface),它允许您获取集线器的上下文对象。

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

关于c# - 从系统中的其他地方调用 SignalR hub 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7634255/

相关文章:

c# - 根据设备方向转动相机图片 (Xamarin.iOS)

c# - MVC Controller 有什么特别之处称为属性吗?

javascript - 如何一起使用 grunt-autoprefixer 和 grunt-sass?

asp.net-mvc - 使用特定条件验证字符串字段的正则表达式

asp.net-mvc - 如何从asp.net MVC Controller 中的uploadify访问scriptData?

c# - 为什么不能推断出嵌套的泛型类型?

c# - NPOI 不会改变单元格的字体颜色

c# - 使用 NEST 创建自定义 token 过滤器

javascript - 有没有办法在实例化 jquery 数据表后锁定/卡住它?

javascript - 合并两个语句