Laravel - Pusher - 当用户不在网站或离开页面时检测

时间:2017-10-25 08:43:31

标签: laravel websocket 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!
    });
});

但是在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');
    }

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

1 个答案:

答案 0 :(得分:2)

您可以使用presence channels来实现此目的。然后,您可以使用presence webhooks在用户进入或离开频道时通知您的服务器。