我有一个用代码点火器制作的Web应用程序。它基本上做的是——
- 用户登录到应用程序
- 用户可以执行各种任务,其中之一是基于计时器的任务。有一个按钮可以启动javascript计时器
- 当计时器运行时,他执行某些任务,一旦完成,他就会停止计时器。计时器可能会运行几分钟到几个小时。
我的问题 - 当 JavaScript 计时器运行时,我们是否可以防止会话超时,以便用户不会注销并且他们的进度不会丢失?我最初的想法是它不可能,至少没有一个简单的方法,因为我们正在处理Javascript计时器(客户端)和会话超时(服务器)。
提前致谢
在整个计时器会话中,每隔几分钟发送一次保持连接请求(最好是 2 到 5 分钟)
此保持连接请求将尽可能轻量级,并且只会在服务器上获取会话并使其保持活动状态
响应也将像会话仍然活跃之类的事情一样简单......
另一方面,你也可以在javascript端userLastActivity上维护一个变量,该变量在每次文档鼠标移动或文档键按下以及少数事件时更新。如果自上次请求以来有任何活动,请发送保持连接请求...
要获得更多关于您的信息,可以查看此处发布的其他相同类型的问题。
基本示例:
setInterval(function(){
$.get('/ImStillAlive.action');
}, 300000); // 5 mins * 60 * 1000
通过对打字活动进行基本检查:
$(function(){
var lastUpdate = 0;
var checkInterval = setInterval(function(){
if(new Date().getTime() - lastUpdate > 300000){
clearInterval(checkInterval);
}else{
$.get('/ImStillAlive.action');
}
}, 300000); // 5 mins * 60 * 1000
$(document).keydown(function(){
lastUpdate = new Date().getTime();
});
});