使用SignalR在预定时间向客户端广播消息

时间:2014-01-06 21:03:29

标签: asp.net vb.net signalr

我想在特定服务器时间使用SignalR从服务器向所有客户端广播消息。此广播消息应该是自动的,其中所有客户端都继续监听服务器方法,一旦我们到达服务器上的预定时间,服务器应该广播该消息。

但我找不到办法。我通过从客户端调用并将其广播到所有客户端但不是自动地成功。

如何实现这一目标。

2 个答案:

答案 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)

您只需在集线器类中添加一个计时器,并按所需的时间间隔向每个客户端广播。