2013-08-16 49 views
0

我使用signalR维基中提到的OWIN自我托管signalR集线器。通过信号中心广播时间

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

但是,为了让这个定时器运行,并实际广播,什么是“最聪明”的方式来做到这一点?

我看到它的方式,我需要在承载集线器的服务中有一个定时器,并让它创建到集线器的连接并调用该命令。它看起来像很多工作,对于很少的功能。是否可以直接在集线器类中执行此操作,因此我不必首先创建连接?

这是我做了什么,到目前为止,我想这是更简单:

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

回答

0

你可以得到中心的背景下并调用自己的服务客户端的方法:

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

这就是我需要向客户端广播服务器端事件时的工作方式。