Один сырой способ сделать это на странице будет использовать запрос небольшой GET по таймеру, идя к серверу - «я все еще здесь». Частота этого будет компромиссом. Это было бы относительно легко сделать с jquery или аналогичной структурой.
Вы не знали бы, находится ли он на заброшенной вкладке или что он открыт, но на самом деле не рассматривается.
Образец для конца клиента (с помощью JQuery):
$session = Math.floor((1 + Math.random()) * 0x10000);
function still_alive() {
$url = $server_url + "/still_alive";
$.get($url, {location: location.href, session: $session});
}
// call it once to prime it
still_alive();
// Set it up on a timer
window.setTimeout(function() {
still_alive();
}, 1000);
1000 является интервал в миллисекундах - так это на втором интервале 1. $ server_url - это сервер для регистрации этого вопроса - я добавляю «/ still_alive» в качестве конечной точки для регистрации. $ session - это может быть какой-то способ идентификации текущего сеанса - установить что-то один раз при загрузке страницы - это может быть результатом функции uuid.
Следующая строка представляет собой запрос JQery GET для всего этого URL-адреса. Ему передается простой объект - с расположением ключа, содержащим URL-адрес текущего местоположения. Возможно, более целесообразно быть POST вместо GET, но принцип все тот же.
Не могли бы вы предоставить небольшой пример кода? – Bleakson