信号器将IHubContext转换为实际的Hub

时间:2014-01-11 22:15:11

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

我想知道是否可以投射结果 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属性上调用stuff。

2 个答案:

答案 0 :(得分:2)

不,您无法将....GetHubContext<....的结果转换为您的集线器类。对不起:(。

当Hub仅为IHubContext时,GetHubContext方法返回IHub

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

答案 1 :(得分:1)

您的班级是否只能创建与集线器的连接并以这种方式调用方法?