带有socket.io的Laravel会话超时警告

带有socket.io的Laravel会话超时警告,laravel,Laravel,我试图在20分钟后为用户创建一个锁屏(对于测试,我用20秒) 我创建了一个中间件,它重定向到锁定屏幕,用户可以在其中插入密码再次解锁。这在重新加载时效果很好,但我希望使用socket.io这样用户将在帐户进入锁定状态前5分钟收到警告,而这正是我努力的方向 这是我的中间件 /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param

我试图在20分钟后为用户创建一个锁屏(对于测试,我用20秒)

我创建了一个中间件,它重定向到锁定屏幕,用户可以在其中插入密码再次解锁。这在重新加载时效果很好,但我希望使用socket.io这样用户将在帐户进入锁定状态前5分钟收到警告,而这正是我努力的方向

这是我的中间件

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        if (!$this->session->has('lastActivityTime')) {
            $this->session->put('lastActivityTime', time());
        } else if (time() - $this->session->get('lastActivityTime') > $this->getTimeOut()) {
            broadcast(new SessionTimeoutCheck('hello'));
            $this->session->forget('lastActivityTime');
            $this->session->put('locked', true);

            return redirect($this->getRedirectUrl())->with([$this->getSessionLabel() => 'You have been inactive.']);

        }
        $this->session->put('lastActivityTime', time());

        return $next($request);
    }
这在重新加载时效果很好

我的客户JS上有这个

    /**
 * @desc Session timeout warning and lock screen
 */
socket.emit('private.user.channel', {
    channel: 'private.user.channel.' + user_id,
}).on("App\\Events\\API\\SessionTimeoutCheck", function (data) {
    console.log(data);
});

所以现在我想知道我是否应该创建一个命令,每分钟运行一次,检查是否已经过了特定的时间,然后显示警告,或者最好的方法是什么?

我假设一旦不活动,它就会被“锁定”。您可以在客户端JS中保留一个计时器,当计时器达到20分钟时,您可以使用socket.io将其发送到服务器,或者使用ajax调用通知客户端已达到20分钟。@adis如何使用socket发送此计时器?