Laravel存在渠道:在数据库中存储加入和保留用户

问题描述 投票:0回答:1

我有这个工作:

Echo.join(`chat.${roomId}`)
    .here((users) => {
        //
    })
    .joining((user) => {
        this.users.push(user);
    })
    .leaving((user) => {
        this.users = this.users.filter(u => u.id != user.id);
   });

这向我显示了当前用户的准确列表。但是我想要的是将它们的状态也带有时间戳存储在数据库中。

所以我想到了这个功能:

saveStatus(user, status) {
   axios.post("/logbooks", { user_id: user.id, status: "offline"})
}

然后在加入和离开状态下调用该函数。但这并不准确:只有一个用户在线时,它不会存储值。当有20位用户离线时,有1位用户离线,它将存储此值的19倍。

有关如何获得更准确的联机-脱机日志到数据库的任何提示?

laravel pusher laravel-echo laravel-7 pusher-js
1个回答
0
投票

您可以通过使用Laravel Echo Server(而不是Pusher)和Redis解决此问题。这里是文档:

https://github.com/tlaverdure/laravel-echo-server#presence-channels

Redis处理发布/订阅机制。每当有人加入/离开状态通道时,Laravel Echo Server就会发布,并且使用Artisan命令,您可以订阅Redis并通过通知数据库对加入/离开做出反应。

© www.soinside.com 2019 - 2024. All rights reserved.