Каким образом написать на JS функцию, которая при активности пользователя отсылает ajax запрос на сервер, но как только пользователь перестал проявлять движения мышкой по странице, через 5 секунд запросы на сервер перестают поступать.
idleTimer = null;
idleState = false; // состояние отсутствия
idleWait = 60000; // время ожидания в мс. (1/1000 секунды)
$(document).ready( function(){
$(document).bind('mousemove keydown scroll', function(){
clearTimeout(idleTimer); // отменяем прежний временной отрезок
if(idleState == true){
// Действия на возвращение пользователя
setInterval(function(){
/* цикл, в нем отсылаем запросы по аяксу */
console.log('online');
}, 1000);
}
idleState = false;
idleTimer = setTimeout(function(){
// Действия на отсутствие пользователя
console.log('offline');
idleState = true;
}, idleWait);
});
$("body").trigger("mousemove"); // сгенерируем ложное событие, для запуска скрипта
});
Думал поступить следующим образом, но в этом коде не устраивает несколько моментов:
1. При загрузке страницы нет статуса не оффлайн, не онлайн.
2. Если человек отошел от страницы, получил оффлайн, а потом получил статус онлайн, а потом снова ушел в оффлайн, setInterval все равно отсылает запросы на сервер.