延迟websocket更新并稍后显示消息?

时间:2015-08-18 15:57:18

标签: php laravel pusher vue.js

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

我使用websockets和height api来处理实时更新,这在玩家“在线”时非常有效。但如果他们不是呢?找我的方式看起来我仍然可以使用pusher处理事件,而只是显示消息,我可以将其存储到数据库600px,其中包含字段div1000px。没关系,但是下次上线时播放给玩家的最佳方式是什么呢?我不想在每个页面加载检查时都有ajax请求,以查看是否有任何看不见的用户通知。

我可能某种程度上需要在他们上线时只获取所有待处理通知一次?

我使用pusher作为我的后端。

1 个答案:

答案 0 :(得分:1)

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

该示例使用SendGrid,但您可以将更新存储到数据库,向其发送推送通知,SMS等。

  

下次上线时播放给玩家的最佳方式是什么?

我猜有两种形式的"即将上线":

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

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

  3. 总结:看起来在正常页面呈现(在服务器上)上查询数据库是否有任何错过的通知将是最简单的解决方案,并且不需要大量资源使用。但是,如果他们不在线,还有其他机制可以发送通知(电子邮件,短信)。