signalr - 如何从服务器调用 SignalR 集线器操作

标签 signalr

SignalR wiki涵盖如何从集线器外部通过集线器进行广播。但是,这会调用客户端操作:

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

有没有办法调用集线器操作,最好以强类型的方式?例如

GetHubContext<MyHub>().Invoke(h => h.Say(message))

我知道可以通过使用 .NET 客户端连接到集线器来实现这一点,但是当调用代码与集线器位于同一服务器上时,这似乎是错误的。

最佳答案

聚会有点晚了,但是,是的,有。

stockticker sample nuget package这样做(尽管它并没有完全使用它!):

基本上,您公开服务器端集线器的静态实例以进行调用。

在示例中,模式是:

public class StockTicker
{
    // Singleton instance
    private readonly static Lazy<StockTicker> _instance = new Lazy<StockTicker>(
        () => new StockTicker(GlobalHost.ConnectionManager.GetHubContext<StockTickerHub>().Clients));

...


    public static StockTicker Instance
    {
        get
        {
            return _instance.Value;
        }
    }

...

然后就可以从任何地方、几乎任何时间调用它!:

StockTicker.Instance.OpenMarket();

asp.net site 上的一篇博客文章也介绍了相同的示例。

关于signalr - 如何从服务器调用 SignalR 集线器操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003111/

相关文章:

signalr - ASP.NET-SignalR 在客户端(浏览器)如何工作?

asp.net - Signalr - 将用户名与 ConnectionId 关联

Asp.Net 作为客户端打开 websocket

jquery - 使用 SignalR 和 jquery 更改 span 上的 css

asp.net-mvc-4 - IISExpress 崩溃并出现 0xc0000008 错误

model-view-controller - 基于角色的通知以及在 MVC 5 中使用 Signalr 的组

ios - 在 Swift 中调用 SignalR 方法 (SwiftR)

azure - 当客户端处于高延迟连接时 SignalR 不工作

c# - SignalR 在 ASP .Net 5 RC-1 中不工作

signalr - 无法使用 OWIN Self Host 关闭并启动新的 SignalR