通过信号中心广播时间

时间:2013-08-16 11:09:36

标签: asp.net timer signalr

我使用signalR wiki中提到的OWIN内容自我托管signalR集线器。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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