【问题标题】:Laravel Presence Channel: Store Joining and Leaving Users in databaseLaravel Presence Channel:在数据库中存储加入和离开用户
【发布时间】:2020-04-05 11:27:24
【问题描述】:

我有这个工作:

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

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

所以我想到了这个功能:

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

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

任何提示如何获得更准确的在线离线日志到数据库?

【问题讨论】:

    标签: laravel pusher laravel-echo laravel-7 pusher-js


    【解决方案1】:

    如果您使用的是 Pusher Channels,您可以为您的 Channels 应用配置在线状态 webhook。您可以针对每个应用在 account dashboard 中激活 webhook。

    presence webhook 将针对以下事件触发; member_added 和 member_removed(用户加入在线状态频道或用户离开在线状态频道(下线)):

    您可以在服务器上侦听这些事件,然后根据您收到的事件更新用户状态。

    如果用户可以同时加入多个房间(频道)(例如房间 1、房间 2、房间 3),您可能需要通过用户特定的在线频道来跟踪用户是在线还是离线。

    例如,如果用户名为“Joe Bloggs”,您将在首次连接到您的 Pusher 应用程序时加入名为 joebloggs 的频道。 (如果用户加入这个频道,他们就在线,如果用户离开这个频道,他们就离线)

    【讨论】:

    • 太棒了!谢谢。不知道 webhook :)
    【解决方案2】:

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

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

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

    【讨论】:

    • 不正确。这个 Presence 频道现在通过 Pusher 和 Laravel Echo 工作。
    • 你想要一个提示来解决你的问题,我给了我自己使用的提示,我说你需要用 Laravel Echo Server 替换 Pusher。您想保留 Pusher 的事实是个人的,不值得投反对票。
    • 这不是小费,因为我已经在使用 Laravel Echo 并且 Pusher 也处理加入和离开。正如最初的帖子中提到的那样,这已经在工作了。我不是唯一一个投反对票的人。
    • "Laravel Echo Server" != "Laravel Echo",第一个是服务器,后一个是客户端
    • 它也是如此。 Echo Server 和 Pusher 中的加入和离开事件没有区别。
    猜你喜欢
    • 2021-02-11
    • 2016-08-26
    • 2019-05-27
    • 2020-06-10
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多