Предотвратите тайм-аут сеанса, если работает таймер javascript

У меня есть веб-приложение, сделанное в воспламенителе кода. Что это в основном делает –

  1. пользователь входит в приложение
  2. Пользователь может выполнять различные задачи, одна из которых – задачи, основанные на таймере. Существует кнопка, которая запускает таймер javascript
  3. Пока таймер работает, он выполняет определенные задачи, и как только он будет завершен, он останавливает таймер. Таймер может работать от нескольких минут до нескольких часов.

Мой вопрос. Пока работает JavaScript-таймер, можем ли мы предотвратить тайм-аут сеанса, чтобы пользователи не выходили из системы и их прогресс не терялся? Моя первоначальная мысль заключается в том, что этого не может быть, по крайней мере, нет простого способа, поскольку мы имеем дело с Javascript-таймером (Client) и таймаутами сеанса (сервера).

заранее спасибо

На протяжении сеанса таймера продолжайте отправлять запрос keepalive каждые несколько минут (предпочтительно от 2 до 5 минут)

Этот запрос keepalive будет как можно более легким, и он будет только получать сеанс на сервере и будет поддерживать его

Ответ будет также прост, как что-то вроде сеанса по-прежнему активно.

С другой стороны, вы также можете поддерживать переменную на стороне javascript-пользователейLastActivity, которая обновляется по каждому документу mousemove или keydown для документов и нескольким событиям. Если с момента последнего запроса была какая-либо активность, отправьте запрос keepalive …

Чтобы получить больше информации о вас, вы можете взглянуть на другой такой же вопрос, размещенный здесь .

Основной пример:

 setInterval(function(){ $.get('/ImStillAlive.action'); }, 300000); // 5 mins * 60 * 1000 

С базовой проверкой на ввод информации:

 $(function(){ var lastUpdate = 0; var checkInterval = setInterval(function(){ if(new Date().getTime() - lastUpdate > 300000){ clearInterval(checkInterval); }else{ $.get('/ImStillAlive.action'); } }, 300000); // 5 mins * 60 * 1000 $(document).keydown(function(){ lastUpdate = new Date().getTime(); }); });