Задать вопрос

Comet(Long polling) — php + jquery?

Не могли бы вкратце объяснить, сопровождая примерами, работу comet(long polling)-приложения при помощи jquery и php? Как конкретно создать ajax-соединение, которое длится некое количество времени(за счет чего)?
  • Вопрос задан
  • 14240 просмотров
Подписаться 9 Оценить Комментировать
Ответ пользователя Сергей Протько К ответам на вопрос (2)
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
js создает соединение (в опциях для ajax запроса выставляется таймаут побольше)
php принимает его и смотри что можно послать. И ждет... ждет пока не появятся данные которые можно послать.
Как только данные появляются (скажем скрипт с какой-то задержкой читает данные из базы или из очереди) то он отправляет эти данные и обрывает соединение.
js скрипт принимает данные, отдает данные на обработку и создает новое соединение.... и так до бесконечности.

По сути просто вместо того что бы опрашивать сервер раз в секунду, создается соединение, живущее только до получения данных. После получения данных соединение закрывается. После закрытия соединения (не важно пришли данные или произошла ошибка/разрыв по таймаут) так же создается новое. На практике таймаут выставляют секунд в 20-30 что бы избежать возможных проблем.
Ответ написан