0

我使用 signalR wiki 中提到的 OWIN 东西自托管一个 signalR 集线器。

每 20 秒,我希望它向“时钟”组中的所有成员广播当前时间。我的集线器中有一个名为 UpdateClock 的方法来处理广播。

但是,要让这个计时器运行并实际广播,“最聪明”的方法是什么?

在我看来,我需要在托管集线器的服务中设置一个计时器,并让它创建到集线器的连接并调用命令。对于很少的功能来说,这似乎是很多工作。是否可以直接在集线器类中执行此操作,因此我不必先创建连接?

到目前为止,这就是我所做的,我希望它更简单:

var signalConnection = new HubConnection(_signalREndPoint);
var hubProxy = signalConnection.CreateHubProxy(_signalRHubName);
signalConnection.Start().Wait();
hubProxy.Invoke(UpdateClock);
signalConnection.Stop();
4

1 回答 1

0

您可以获取 Hub 的上下文并在您自己的服务上调用客户端方法:

while (conditionToRun)
{
     Thread.Sleep(WaitForInSeconds * 1000);
     var context = GlobalHost.ConnectionManager.GetHubContext<YourHubName>();
     context.Clients.Group("clockGroupName").updateClock(DateTime.UtcNow);
} 

当我需要向客户端广播服务器端事件时,我就是这样做的。

于 2013-08-16T14:04:15.010 回答