September 22, 2023

Частые и длинные опросы сервера

Частые и длинные опросы — это способ поддерживать постоянное соединение с сервером, не используя специфических протоколов.

Частые опросы

Устаревший подход, в котором клиент периодически опрашивает сервер на наличие новых данных.

При ответе сервер:

  • Отмечает что клиент онлайн
  • Отправляет скопившееся данные

Недостатки:

  • Клиент обновляется с задержкой
  • Излишняя нагрузка (в случае неактивности клиента запросы все-так же отправляются)

Длинные опросы

Более современный и простой способ поддержки соединения с сервером. Подходит в случае если сообщения приходят редко.

Работает так:

  • Запрос отправляется на сервер
  • Сервер не закрывает соединение, пока не появиться данные для отправки
    • Если соединение было потеряно, браузер немедленно повторяет запрос
  • Когда данные появляются, сервер отвечает
  • Браузер снова отправляет запрос на сервер

Для работы с длинным опросами архитектура сервера должна поддерживать множество ожидающих соединений и повышенный объем оперативной памяти.

Часто такая проблема возникает с бэкендом, написанными на PHP или Ruby, но технически дело не в языке, а в реализации. Сервера реализованные на Node.js, обычно не имеют таких проблем.