我想在特定服务器时间使用SignalR从服务器向所有客户端广播消息。此广播消息应该是自动的,其中所有客户端都继续监听服务器方法,一旦我们到达服务器上的预定时间,服务器应该广播该消息。
但我找不到办法。我通过从客户端调用并将其广播到所有客户端但不是自动地成功。
如何实现这一目标。
答案 0 :(得分:1)
首先,您需要某种集线器:
public class MyHub : Hub {}
然后,您可以使用客户端或任何您想要执行的操作连接到此集线器。然后你需要一些类型的循环类发送到你的集线器(你也可以在集线器中作为一个静态计时器这样做,但我们将这个作为一个单独的类)。
public class Looper
{
public Timer Interval
public Looper(TimeSpan interval)
{
Interval = new Timer(Loop, null, TimeSpan.Zero, interval);
}
private static void Loop(object state)
{
GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.executeYourMethod();
}
}
现在我们需要在某个地方实例化这个类,我们将在我们的集线器中作为静态实现:
public class MyHub : Hub
{
public static Looper MyInterval = new Looper(TimeSpan.FromSeconds(1)); // Send every 1 second
}
希望这有帮助!
答案 1 :(得分:0)
您只需在集线器类中添加一个计时器,并按所需的时间间隔向每个客户端广播。