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

use*_*512 7 c# self-hosting signalr signalr-hub

我想知道是否可以将结果转换 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);
}
Run Code Online (Sandbox Code Playgroud)

我想从我的其他班级称呼它.由于我无法转换为ChatHub并调用SendUpdate,我必须去:

GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.UpdateTime(time, auth);
Run Code Online (Sandbox Code Playgroud)

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

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

N. *_*len 2

不,您不能将结果投射....GetHubContext<....到您的中心类。对不起 :(。

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

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