【问题标题】:Signalr cast IHubContext to actual HubSignalr 将 IHubContext 转换为实际的 Hub
【发布时间】:2014-01-30 20:35:56
【问题描述】:

我想知道是否可以转换结果 var hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); 到我实际的 ChatHub 课程。 因为GlobalHost.ConnectionManager.GetHubContext<ChatHub>() as ChatHub失败了

在我的 ChatHub 类中,我有一个方法 UpdateTime():

public void SendTimeUpdate(DateTime time, string auth)
{
    Clients.All.UpdateTime(time, auth);
}

我想从我的其他班级调用它。由于我无法投射到 ChatHub 并调用 SendUpdate 我必须去:

GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.UpdateTime(time, auth);

但是如果我走这条路,代理脚本/signalr/hubs中不会添加方法SendTimeUpdate

这个问题有解决方案吗?我想获取类型化的 Hub 实例,而不是直接在 IHubContext 的 Clients 属性上调用东西。

【问题讨论】:

  • 所以方法UpdateTime需要在你的客户端代码中定义。你能发布你拥有的任何javascript吗?

标签: c# signalr signalr-hub self-hosting


【解决方案1】:

难道您的班级不能创建与您的集线器的连接并以这种方式调用该方法吗?

【讨论】:

  • 嗯,可以,但看起来不是最佳做法。
【解决方案2】:

不,您不能将....GetHubContext&lt;.... 的结果转换为您的集线器类。对不起:(。

当 Hub 只是一个 IHub 时,GetHubContext 方法返回一个 IHubContext

如果您想集中逻辑,只需创建一个可以从集线器和外部服务调用的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多