Что такое технология длинных опросов
Вернее - это не длинные опросы, а частые. Т.е. через определенное время приложение как бы спрашивает сервер.
- Есть что новое?
И в ответ получает, либо пустоту (нет изменений) либо что-то, что оппонент (в данном случае будем рассматривать именно реализацию личных сообщений) вам что-то написал.
Плюсы данного метода, его реализация. Несколько строк кода на jquery.
Одним из главных минусов - это постоянные запросы, даже если изменений на сервере нет.
И если таких запросов будет много... или очень много... В общем сами понимаете.
Тем не менее - это неплохой способ для не сильно загруженного приложения.
let timer = 0; (function survey(){ let speed = '1000'; // Изначальная скорость обновления if( timer > 10 ) speed = '5000'; // скорость когда таймер достигнет отметки 10 else if( timer > 50) speed = '10000'; let timeout = setTimeout(function(){ $('.timer').html(timer++); // Увеличиваем таймер на 1 и показываем в блоке (если необходимо) есди нет необходимости в визуализации то просто timer ++ // Здесь должен располагаться скрипт который будет выполняться. Например ajax запрос к скрипту читающему сообщения if(timer < 100) survey(); // Запускаем функцию пока таймер не больше 100 }, speed); })();
Ну и как обычно разберем что к чему.
survey() - это функция которая, через определенное время, вызывает сама себя.
let speed = '1000' - скорость обновления. В самом начале функция будет работать каждую секунду.
Через 10 секунд скорость упадет до 5 секунд if( timer > 10 ) speed = '5000'
Через 50 до 10 else if( timer > 50) speed = '10000' и так далее
В принципе скорость можно и не менять.
Проблема в том, что если страницу, где происходит обновление не закрыть, она так и будет создавать нагрузку на сервер. Постепенно понижая скорость мы снижаем ее.
Теперь вопрос, а если человек вообще уйдет или переключится на что-то другое? Нам нужно учесть и это.
if(timer < 100) survey() . Теперь функция будет обновляться до тех пор, пока таймер не привысит 100.
В принципе вот и все.
Да, вот еще что. В данной реализации функция будет обновляться до тех пор, пока таймер меньше 100 даже если пользователь активен.
Чтобы этого ни случилось, обнуляйте таймер, например когда юзер отправляет сообщение.