【问题标题】:show that event is in progress to all users向所有用户显示该事件正在进行中
【发布时间】:2013-12-04 23:19:27
【问题描述】:

我目前正在为我的网络应用程序使用 laravel4。我使用this tutorial 来使用实时通知。我正在运行 socket.io、nodejs 和 redis,如教程中所示。到目前为止,这只是用于 pubsub,我的主要应用程序是一个使用 laravel 4 的 php 应用程序。

我要解决的问题是,当一个用户启动一个事件时,我想向所有用户显示一个加载 gif(你知道旋转的东西)并继续直到事件停止。我知道我可以通过在某个事件启动时使用 socket.io 触发一个事件来更新页面来完成此操作。此事件可能是从 JavaScript 端使用 ajax 的 API 调用。

问题在于,如果页面被刷新或新用户加载页面,他们将不会收到正在发生事件的通知。这是因为自从页面加载后,没有任何内容发布到该频道。如何让活动保持打开状态,以便只要该活动正在进行,每个人都会显示加载 gif?

【问题讨论】:

    标签: php node.js redis socket.io laravel-4


    【解决方案1】:

    也许,如果你使用redis,你可以把事件放在其他类型的数据中。

    Pub/sub 不是持久的,所以如果你没有连接,你就会丢失信息。

    您可以在用户的​​频道中使用列表并放在左侧(LPUSH),并使用双端队列(RPOP - BRPOP)回馈用户。 BRPOP 是在 nodejs 中执行此操作的好方法。您与 redis 建立连接(仅用于 brpop 的连接,因为它可以在 redis 上被阻止)发送 rpop 命令,并在双端队列上进行回调。 更多信息到blocking deque list and pattern event notification

    如果用户必须知道的只是状态,您也可以使用密钥(set 和 del,或使用 TTL)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2014-02-04
      相关资源
      最近更新 更多