SignalR - 从最新的Hub上下文从服务器到客户端发送

时间:2016-07-07 06:32:41

标签: asp.net signalr

我只有一个客户端和服务器的简单演示。我可以来回发送消息,非常琐碎的东西。

服务器集线器有一个定时器,每1000毫秒向客户端发送一条消息。现在我有一个按钮,点击它时,会向服务器发送一条消息(通过signalR)。

问题: 单击按钮(并将消息发送到服务器)时,每次都会实例化Hub(我读到有关SignalR生命周期here)。 当然,当Hub被实例化时,Timer也被实例化。所以我看到的副作用(即bug)就是消息从多个Hub实例发送到客户端。

我想要什么: 我希望客户端接收消息(来自Hub上运行的Timer),但只有一组消息来自单个Hub(最新的Hub实例?)。我不希望从实例化的每个Hub生成的同时/多条消息。

但也许我在这里做了一些严重错误的设计。

1 个答案:

答案 0 :(得分:1)

您不应在集线器实例中设置计时器,因为它们是在每个请求上重新创建的。 只需创建一个Singleton类来处理计时器和操作。然后从中心实例访问该单例。

单例实例将在应用程序的整个实时循环期间保持不变,因此您将只创建一个计时器。 为避免并发问题,您的单例应为Lazy