我是SignalR的新手,我正在尝试使用它来编写一个美化的熟食柜台数字系统。我有它的工作,所以"反面"人们可以推进数字,它将显示在"客户方面"以及另一个"柜台"电脑。但是我注意到,如果我打开一个新的"计数器"页面,它不知道其他客户现在在哪个数字,除非有人在新页面之前再次推进这些数字。如果新窗口尝试提前编号,则会将所有人重置为1。在SignalR中是否有一种方法可以让新客户端查看其他客户端的当前状态,或者我是否必须将数据持久保存到外部源(如数据库或文本文件)? (对于我的3-5个数据,数据库似乎有点过分。)
如果有必要,我可以提供一些代码,但我所拥有的是有效的,它是SignalR集线器的一个非常基本的版本。很像无处不在的聊天教程,除了我有2个客户页面,一个只接收,一个可以发送和接收。
答案 0 :(得分:0)
您可以在服务器上保存计数器状态,每个提前该号码的客户端都会通知服务器。当新客户端连接服务器时,通过OnConnected
事件知道该服务器,然后它可以通过计数器号通知该客户端。
答案 1 :(得分:0)
你确实需要某种机制来存储"状态"当前计数器在服务器中的位置,以便在多个客户端会话中持续。由于您无法访问通常的.Net会话,因此可以使用HttpRuntime.Cache或Signal-R客户端代理状态。
Web服务器缓存:
System.Web.HttpRuntime.Cache.Get("Counter")
客户端代理状态:
ChatHubProxy.state.counter= 10;
希望这有帮助!