Надеюсь, это говорит само за себя, и, надеюсь, это работает! Это немедленно уведомляет сервер , когда пользователь перемещает мышь, предполагая, что сервер не был уведомлен в течение секунды, И периодически.
Мы планируем activityNotification()
запускать каждую секунду (используя что-то вроде jQuery timer или setInterval(func, time)
функция ), чтобы обрабатывать следующую временную шкалу максимально быстро:
- 0 мс: пользователь двигает мышь, сервер уведомлен
немедленно
- 657 мс: пользователь нажимает клавишу,
но пока рано уведомлять сервер
активность
- 1000 мс:
ActivityNotification () работает как
по расписанию, видит, что у нас
деятельность мы не уведомили
о сервере, уведомляет сервер
- 2000 мс: ActivityNotification () работает как
запланировано, но ничего не сообщать серверу о
- 2124 мс: пользователь перемещает мышь, сервер немедленно уведомляется, поскольку прошло 1,124 секунды с момента последнего уведомления сервера
Код:
//Track the last activity you saw
var lastActivity = 0;
//Remember the last time you told the server about it
var lastNotified = 0;
//Determines how frequently we notify the server of activity (in milliseconds)
var INTERVAL = 1000;
function rememberActivity() {
lastActivity = new Date().getTime();
activityNotification();
}
function activityNotification() {
if(lastActivity > lastNotified + INTERVAL) {
//Notify the server
/* ... $.ajax(); ... */
//Remember when we last notified the server
lastNotified = new Date().getTime();
}
}
setInterval('activityNotification()', INTERVAL);
$.mousemove(function() {
//Remember when we last saw mouse movement
rememberActivity();
});
$.keyup(function() {
//Remember when we last saw keyboard activity
rememberActivity();
});
И помните, не у всех пользователей будет включен JavaScript, и это приведет к серьезной разрядке батареи на мобильных устройствах.