我使用signalR wiki中提到的OWIN内容自我托管signalR集线器。
每隔20秒,我希望它向“时钟”组中的所有成员广播当前时间。 我在我的集线器中有一个名为UpdateClock的方法来处理广播。
但是,要让这个计时器运行并实际播放,那么“最聪明”的方法是什么?
我看到它的方式,我需要一个托管集线器的服务中的计时器,并让它创建一个到集线器的连接并调用命令。对于非常少的功能而言,这似乎是很多工作。是否可以直接在集线器类中执行此操作,因此我不必先创建连接?
这就是我所做的,到目前为止,我希望它更简单:
var signalConnection = new HubConnection(_signalREndPoint);
var hubProxy = signalConnection.CreateHubProxy(_signalRHubName);
signalConnection.Start().Wait();
hubProxy.Invoke(UpdateClock);
signalConnection.Stop();
答案 0 :(得分:0)
您可以获取Hub的上下文并在您自己的服务上调用客户端方法:
while (conditionToRun)
{
Thread.Sleep(WaitForInSeconds * 1000);
var context = GlobalHost.ConnectionManager.GetHubContext<YourHubName>();
context.Clients.Group("clockGroupName").updateClock(DateTime.UtcNow);
}
当我需要向客户端广播服务器端事件时,我就是这样做的。