保持用户会话活跃的正确方法

时间:2017-06-21 16:08:56

标签: javascript session server

我正在创建一个执行以下操作的脚本:

每隔X分钟,检查用户是否输入了某些内容。如果他们有,那么保持他们的服务器端会话活着(通过AJAX调用一些无害的动作服务器端)。如果他们没有,那就什么都不做。

这是我想出来的,但我想知道是否有更好的方法:

// This variable will keep track of when the user has typed.
var b = false;

$(document).on('keyup', function () {
    console.log("Setting b to true.");
    b = true;
});

setInterval(func, 5000);

function func()
{
    if (b == true) {
        console.log("Keeping alive!");
        // Make AJAX call here.
    }
    b = false;
    console.log("  Setting b to false.");
}

我愿意接受建议。

1 个答案:

答案 0 :(得分:0)

几年前,Paul Irish在jQuery中实现了一个空闲计时器。 (基于YUI [1]中Nicholas C. Zakas的内容)。您可以在[2]看到他的文章,并在[3]看到维护的github存储库。

该方法类似于您的代码片段,即用于侦听“活动”的事件的侦听器,并且为了防止服务器被事件淹没,还需要设置何时对服务器执行ping操作的计时器。您可以在他们的代码中看到他们遇到了哪些特殊异常以及他们侦听了哪些事件。

使用保罗·爱尔兰(Paul Irish)的空闲计时器,埃里克·海因兹(Eric Hynds)编写了不错的文章,并实现了jQuery插件,以通知用户会话即将过期。不幸的是,这篇文章不见了。该代码似乎保持在[4]

[1] https://humanwhocodes.com/blog/2009/06/02/detecting-if-the-user-is-idle-with-javascript-and-yui-3/

[2] https://www.paulirish.com/2009/jquery-idletimer-plugin/

[3] https://github.com/thorst/jquery-idletimer

[4] https://github.com/ericlbarnes/jquery-idle-timeout