【问题标题】:Can SignalR tell new clients the state of the existing clients' data?SignalR 可以告诉新客户现有客户数据的状态吗?
【发布时间】:2016-01-27 11:32:24
【问题描述】:

我是 SignalR 的新手,我正在尝试使用它来编写一个基本的美化熟食柜台取号系统。我让它工作,因此“柜台”人员可以推进数字,它将显示在“客户方”以及其他“柜台”计算机上。但是我注意到,如果我打开一个新的“计数器”页面,它不知道其他客户现在在什么号码上,除非有人在新页面之前再次推进号码。如果新窗口尝试增加数字,它会将每个人再次重置为 1。 SignalR 中是否有办法让新客户端查看其他客户端的当前状态,或者我是否必须将数据保存到外部源,例如数据库或文本文件? (对于我的 3-5 条数据来说,一个数据库似乎有点矫枉过正。)

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

【问题讨论】:

    标签: signalr signalr-hub


    【解决方案1】:

    您可以保存计数器状态,在您的服务器上,每个推进该数字的客户端都会通知服务器。当有新客户端连接时,服务器通过OnConnected 事件知道这一点,然后它可以在计数器编号上通知该客户端。

    【讨论】:

      【解决方案2】:

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

      Web 服务器缓存:

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

      客户端代理状态:

      ChatHubProxy.state.counter= 10;
      

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 2012-03-09
        • 2013-04-05
        • 2021-03-13
        • 2014-11-15
        相关资源
        最近更新 更多