【问题标题】:delay websocket updates and show the message later on?延迟 websocket 更新并稍后显示消息?
【发布时间】:2015-11-11 16:07:01
【问题描述】:

我有一个应用程序,基本上玩家可以在其中互相挑战。在某个时候他们的挑战完成了,我需要向他们(他们俩 - 有两个玩家)提供更新消息,例如“嘿,你赢了并获得了 100500 分”。反之亦然 - “嘿,你松了”

我使用 websockets 和 pusher api 来处理实时更新,这在玩家“在线”时非常有效。但如果他们不是呢?对我来说要走的路看起来我仍然可以使用推送器处理事件,而不是只显示消息,我可以将它存储到 db 到表 challenge_notifications 与字段 messagesseen = 0。没关系,但是当玩家下次上线时,最好的方式是什么?我不想在每个页面加载检查时都有 ajax 请求,以查看是否有任何看不见的用户通知。

我可能以某种方式只需要一次获取所有待处理的通知,当它们上线时?

我使用Laravel 5 作为我的后端。

【问题讨论】:

    标签: php laravel pusher vue.js


    【解决方案1】:

    最近在 Pusher 博客上有一篇关于如何使用 Pusher HTTP API 检测用户是否在线的帖子:Enabling Smart Notifications with Pusher and SendGrid

    该示例使用 SendGrid,但您可以将更新存储到数据库中,向他们发送推送通知、短信等。

    那么当玩家下次上线时,向他展示此内容的最佳方式是什么?

    我猜“上线”有两种形式:

    1. 用户不再在该站点上,必须导航到该站点。在这种情况下,当页面加载时,您可以查询数据库并直接为它们提供任何错过的通知(这似乎是最简单的解决方案)。或者,如果它适合您的应用架构,则在页面加载时发出一个 AJAX 请求以获取任何错过的通知。

    2. 如果用户由于移动或网络连接不良而离线。在这种情况下,您可以使用pusher.connection.bind('connected', function() {}); 绑定到connected 事件,然后进行查询以查看他们是否错过了任何通知。

    总而言之:在正常页面呈现(在服务器上)时查询数据库是否有任何遗漏的通知似乎是最简单的解决方案,并且不需要太多资源使用。但是,如果通知(电子邮件、短信)不在线,还有其他发送通知的机制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-18
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多