2016-07-07 64 views
0

我只有一个客户端和服务器的简单演示。我可以来回发送消息,非常微不足道的东西。SignalR - 从最新的Hub上下文发送服务器到客户端

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

问题: 当点击按钮(和消息发送到服务器)时,集线器每次实例化(我读了关于SignalR生命周期here)。 当然,当Hub被实例化时,Timer也被实例化。所以我看到的副作用(即错误)是消息从多个Hub实例发送到客户端。

我想要的是: 我希望客户端能够接收来自Hub上运行的Timer的消息,但只能从一个Hub(最新的Hub实例?)发送一组消息。我不希望从实例化的每个Hub产生的同时/多个消息。

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

回答

1

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

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

相关问题