【问题标题】:Broadcasting message to client at scheduled time using SignalR使用 SignalR 在预定时间向客户端广播消息
【发布时间】:2014-01-07 15:05:51
【问题描述】:

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

但我没有找到解决方法。通过从客户端调用并将其广播给所有客户端但不是自动的,我成功了。

如何实现。

【问题讨论】:

  • 你能每隔 x 秒从客户端调用一次并查看 isTimeToBroadCast 吗?
  • 不确定是否要使用 SignalR 来执行此操作。实际上,它与 SignalR 本身非常正交。编写按时间间隔运行的代码确实是您需要做的。可能有一个 .NET 库可以用来安排代码在某个时间运行(尽管它永远不会真正实时)

标签: asp.net vb.net signalr


【解决方案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
}

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您可以在您的中心类中添加一个计时器,并以所需的时间间隔向每个客户端广播。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-02
      • 2021-09-02
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多