Laravel - Pusher - 检测用户何时不再访问网站或离开页面

Zal*_*alo 2 websocket laravel pusher laravel-echo

我正在开发的实时应用程序遇到问题。我的问题是关于用户使用 Pusher 的状态。例如,我想获得正确的方法来检测用户何时离开页面或保持不活动一段时间以将其状态设置为“离线”。我怎么能做到这一点?我几乎可以肯定不建议在客户端开发此功能,它应该在服务器端,但是如何?我如何询问客户是否还在那里?我应该创建一个命令并用 cron 运行它吗?是否有任何机制可以让服务器“检测”套接字断开连接?任何帮助将不胜感激,谢谢!

更新

使用 NoseJS 和 SocketIO 真的很简单,你只需要写:

io.on('connection', function (socket) { // When client connects
    socket.on('disconnect', function() { // Listen to disconnections from SERVER-SIDE
        // Logic when a user disconnects. This is what I want!
    });
});
Run Code Online (Sandbox Code Playgroud)

但是在 Laravel 中,我只有这个:

// A Laravel Event Class that implements the shouldBroadcast interface...
    public function broadcastOn()
    {
        // I think here is where connections happen, but I don't know how to detect 'disconnections' :(
        return new PresenceChannel('someString');
    }
Run Code Online (Sandbox Code Playgroud)

PD:我正在使用 Laravel Echo 和 Pusher :)

Wil*_*ell 5

您可以使用在线渠道来实现这一点。然后,您可以使用Presence Webhook在用户进入或离开频道时通知您的服务器。

  • 您需要启用 [webhooks](https://pusher.com/docs/webhooks) 并将其配置为发送到您的 Laravel 服务器。然后你需要配置 Laravel 路由和控制器来处理它们。您专门寻找“member_removed”网络钩子。 (2认同)