//登录后
//每2min发送 请求(设置个变量 表示还在登录)
//每10min 发送登出请求 期间若有检查到操作 则取消这个定时任务
//服务器设置 session 超时时间为 3min
var isAlive = true;
var heartBeatInterval = 2 * 60 * 1000; // 2 min
var expiredInterval = 10 * 60 * 1000; // 10 min
var heartBeatUrl = "heartBeat.do";
var logOutUrl = "logout.do";
var delayTaskId = -1;
var postHeartBeat = function(){
console.log("post heartBeat ..." + new Date());
if(isAlive){
$.ajax({url:heartBeatUrl,async:true});
window.setTimeout(postHeartBeat,heartBeatInterval);
}
};
var postExpired = function(){
console.log("post postExpired ..." + new Date());
$.ajax({url:logOutUrl,async:true});
isAlive = false;
};
var periodPostExpired = function(){
if(isAlive){
delayTaskId = window.setTimeout(postExpired,expiredInterval - 1 );
bindExpireListener();
window.setTimeout(periodPostExpired,expiredInterval);
}
}
var doEvent = function(){
console.log("doEvent ..." + new Date());
window.clearTimeout(delayTaskId);
cancelExpireListener();
};
var bindExpireListener = function(){
$('html').on('mousemove',doEvent);
$('html').on('keydown',doEvent);
$('html').on('click',doEvent);
//遍历子窗体
var target = undefined;
for(var i=0;i<$('iframe').length;i++){
target = $('iframe')[i].contentDocument ||$('iframe')[i].contentWindow;
$(target).on('mousemove',doEvent);
$(target).on('keydown',doEvent);
$(target).on('click',doEvent);
}
};
var cancelExpireListener = function(){
$('html').off('mousemove',doEvent);
$('html').off('keydown',doEvent);
$('html').off('click',doEvent);
//遍历子窗体
var target = undefined;
for(var i=0;i<$('iframe').length;i++){
target = $('iframe')[i].contentDocument ||$('iframe')[i].contentWindow;
$(target).off('keydown',doEvent);
$(target).off('mousemove',doEvent);
$(target).off('click',doEvent);
}
};
postHeartBeat();
periodPostExpired();