Iis 服务器中其他位置的信号器访问集线器

Iis 服务器中其他位置的信号器访问集线器,iis,signalr,Iis,Signalr,我将SignalR与我的应用程序一起托管在IIS中,虽然我的远程客户端可以愉快地连接,但我无法让创建了集线器的应用程序可靠地连接和参与 我尝试从web服务器进程内连接到集线器,这是成功的,但前提是我知道它位于哪个端口。由于可以从IIS将其配置为任何端口,因此我不知道尝试在内部连接到哪个端口 我曾希望我可以利用IHubContext,但这似乎只给了我发送消息的方式,而没有给我接收消息的方式 我觉得我错过了一些明显的东西 -编辑- 我继续我的实验,但现在我遇到了另一个困难 我正在这样设置我的中心 G

我将SignalR与我的应用程序一起托管在IIS中,虽然我的远程客户端可以愉快地连接,但我无法让创建了集线器的应用程序可靠地连接和参与

我尝试从web服务器进程内连接到集线器,这是成功的,但前提是我知道它位于哪个端口。由于可以从IIS将其配置为任何端口,因此我不知道尝试在内部连接到哪个端口

我曾希望我可以利用IHubContext,但这似乎只给了我发送消息的方式,而没有给我接收消息的方式

我觉得我错过了一些明显的东西

-编辑-

我继续我的实验,但现在我遇到了另一个困难

我正在这样设置我的中心

GlobalHost.DependencyResolver.Register(typeof(StatusHub), () => this.StatusHub);
这样,我就可以拥有一个hub实例,并从服务器内部但在hub本身外部钩住其中的事件

然后我可以利用几个事件

public event EventHandler<string> Connected;

public event EventHandler<string> Disconnected;
当集线器过度调用时,当客户端连接和断开连接时,这些函数被调用

public override Task OnConnected()

然后我似乎不能做的是使用集线器向客户端发送消息。我试过这么做

var host = GlobalHost.ConnectionManager.GetHubContext<StatusHub>();
host.Clients.All.Update(args);

当主机作为一个有效的对象返回时,我调用的任何客户端函数似乎都无法通过,并且我在对象上看不到任何客户端。

最后,我遗漏了一个关键点。我不再在内部连接到自己的集线器,因为回调会在我需要知道的时候给我打电话

最后调用客户机函数时,我试图调用一个hub函数Update,而不是客户机函数heartbeat

public override Task OnDisconnected(bool stopCalled)
var host = GlobalHost.ConnectionManager.GetHubContext<StatusHub>();
host.Clients.All.Update(args);