我想知道是否可以投射结果
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。
答案 0 :(得分:2)
不,您无法将....GetHubContext<....
的结果转换为您的集线器类。对不起:(。
当Hub仅为IHubContext
时,GetHubContext方法返回IHub
。
如果您想集中逻辑,只需制作一个可以通过集线器和外部服务调用的方法。
答案 1 :(得分:1)
您的班级是否只能创建与集线器的连接并以这种方式调用方法?