关于asp.net:SignalR-通过最新的Hub上下文从服务器发送到客户端

SignalR - Sending from server-to-client from latest Hub context

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

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

问题:
单击按钮(并将消息发送到服务器)后,每次都会实例化集线器(我在这里了解到SignalR的生命周期)。
当然,当集线器实例化时,计时器也会实例化。因此,我看到的副作用(即错误)是正在从多个集线器实例向客户端发送消息。

我想要什么:
我希望客户端(从集线器上运行的计时器)接收消息,但是从单个集线器(最新的集线器实例?)仅接收一组消息。我不希望从实例化的每个集线器中生成同时/多个消息。

但是也许我在这里的设计中犯了严重错误。


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

单例实例将在应用程序的整个生命周期中持续存在,因此您将仅创建一个计时器。
为了避免并发问题,您的单例应该是Lazy