SignalR能告诉新客户现有客户的状态吗?数据?

时间:2016-01-26 20:34:29

标签: signalr signalr-hub

我是SignalR的新手,我正在尝试使用它来编写一个美化的熟食柜台数字系统。我有它的工作,所以"反面"人们可以推进数字,它将显示在"客户方面"以及另一个"柜台"电脑。但是我注意到,如果我打开一个新的"计数器"页面,它不知道其他客户现在在哪个数字,除非有人在新页面之前再次推进这些数字。如果新窗口尝试提前编号,则会将所有人重置为1。在SignalR中是否有一种方法可以让新客户端查看其他客户端的当前状态,或者我是否必须将数据持久保存到外部源(如数据库或文本文件)? (对于我的3-5个数据,数据库似乎有点过分。)

如果有必要,我可以提供一些代码,但我所拥有的是有效的,它是SignalR集线器的一个非常基本的版本。很像无处不在的聊天教程,除了我有2个客户页面,一个只接收,一个可以发送和接收。

2 个答案:

答案 0 :(得分:0)

您可以在服务器上保存计数器状态,每个提前该号码的客户端都会通知服务器。当新客户端连接服务器时,通过OnConnected事件知道该服务器,然后它可以通过计数器号通知该客户端。

答案 1 :(得分:0)

你确实需要某种机制来存储"状态"当前计数器在服务器中的位置,以便在多个客户端会话中持续。由于您无法访问通常的.Net会话,因此可以使用HttpRuntime.Cache或Signal-R客户端代理状态。

Web服务器缓存:

System.Web.HttpRuntime.Cache.Get("Counter")

客户端代理状态:

ChatHubProxy.state.counter= 10;

希望这有帮助!