User Inactivity

by shivkumarganesh

JavaScript

var MAX_INACTIVE_TIME = 20000,
  POLL_THRESHOLD = 15000,
  activityCount=0,
  timerIdentifier,
  intervalIdentifier;

// Setup timer for Inactivity Calculation
function startTimer() {
  timerIdentifier = setTimeout(function() {
  	clearInterval(intervalIdentifier);
    logout();
  }, MAX_INACTIVE_TIME);
}

// Setup intervals within which check happens
function intervalTimer(){
	intervalIdentifier = setInterval(function(){
  	if(activityCount>0){
    	activityCount=0;
    	keepAlive();
      resetTimer();
    }
  },POLL_THRESHOLD);
}



// Call Session is Alive
function logout() {
  console.log('LOGOUT');
}

// Call Keep Alive
function keepAlive(){
	console.log('KEEP ALIVE');
  resetTimer();
}

// Reset setup Timer
function resetTimer() {
  clearTimeout(timerIdentifier);
  startTimer();
}

// Update Activity Count
function updateActivityCount(){
	console.log(activityCount)
	return activityCount++;
}

// Setup listener for inactivity
function setupListener() {
  document.addEventListener("mousemove", updateActivityCount, false);
  document.addEventListener("mousedown", updateActivityCount, false);
  document.addEventListener("keypress",  updateActivityCount, false);
  document.addEventListener("touchmove", updateActivityCount, false);
  startTimer()
  intervalTimer();
}

setupListener();