我是SignalR的新手,我正在尝试用它来编写一个基本上美化的熟食店柜台取号系统。我让它工作,以便“柜台”的人可以提前数字,它将显示在“客户端”以及另一台“柜台”的计算机。然而,我注意到,如果我打开一个新的“计数器”页面,它不知道其他客户现在使用的是什么数字,除非有人在新页面之前再次输入数字。如果新窗口尝试使数字前进,则会再次将所有人重置为1。在SignalR中,有没有办法让新客户端查看其他客户端的当前状态,或者我是否必须将数据持久化到外部源,如数据库或文本文件?(对于我的3-5条数据来说,数据库似乎有点过分了。)
如果需要,我可以提供我的一些代码,但我所拥有的是工作的,并且它是一个非常基本的SignalR集线器版本。很像无处不在的聊天教程,除了我有两个客户端页面,一个是只接收,一个可以发送和接收。
发布于 2016-01-27 08:44:46
您可以保存计数器状态,在您的服务器上,每个推进该数字的客户端都会通知服务器。当一个新的客户端连接时,服务器通过OnConnected事件知道这一点,然后它可以通知该客户端计数器号。
发布于 2016-01-27 11:32:24
您确实需要某种机制来在服务器中存储当前计数器的“状态”,以便它在多个客户端会话中持久存在。由于您无法访问通常的.Net会话,因此可以使用HttpRuntime.Cache或Signal-R客户端代理状态。
Web服务器缓存:
System.Web.HttpRuntime.Cache.Get("Counter")客户端代理状态:
ChatHubProxy.state.counter= 10;希望这能有所帮助!
https://stackoverflow.com/questions/35023424
复制相似问题