Проблема с накопление запросов и их последующей массовой отправкой на сервер

Доброго времени суток!

На сайте стоит setInterval 30сек. на отправку запроса на сервер (/check/user), что бы получить данные о пользователе и отправить накопленную статистику.

По логам на сервере видно, что иногда от именно от одного IP приходит подряд 100-300 запросов на адрес проверки (/check/user)... в секунду по 20 штук. проблема возникает именно с этим запросом, то есть совсем не похоже на dos.

Такое ощущение, что при определенных условиях, запросы как бы накапливаются, и потом все вместе, дружной группой летят на сервер.

Что это за поведение? И как бы его предотвратить?

Спасибо за вниманием.

setInterval(() => {
   $.post('/user/check'), function (user) {
      API.user.setToken(user);
   })
}, 60000)

введите сюда описание изображения


Ответы (1 шт):

Автор решения: DiD

Замените setInterval() на setTimeout(). Это решит вашу проблему.

Можно отслеживать момент переключения вкладок событиями:

window.addEventListener ( "blur",  ()={ /* ушли с вкладки */ } )
window.addEventListener ( "focus", ()={ /* открыли вкладку */ } )
window.addEventListener ( "unload", ()={ /* закрыли вкладку */ } )
→ Ссылка