Технология Comet

Технология Comet — позволяет отправлять произвольные сообщения клиенту (в браузер) по инициативе сервера, это и называется push notifications или по-русски push уведомления. Данная возможность достигается путём поддержания постоянного соединения браузера с Comet сервером. То есть, для того, чтобы мы могли отправить push уведомление в браузер посетителя, необходимо поддерживать постоянное соединение. Для этого используется технология websocket, а в тех браузерах, которые не поддерживают websocketes используется механизм long polling ajax запросов.

Как работают push уведомления.

На схеме изображено место комет сервера в процессе работы. Взаимодействие построено следующим образом.

  1. Браузер открывает страницу вашего сайта
  2. После загрузки страницы JavaScript устанавливает постоянное соединение с comet сервером.
  3. Пока открыта страница ваш сервер может отправить произвольное сообщение клиенту. Для этого он обращается с помощью PHP Api к комет серверу и передаёт ему сообщение для браузера.
  4. Комет сервер используя открытое соединение с браузером доставляет полученное сообщение в браузер.
  5. JavaScript Api полученное от сервера сообщение предаёт в ваш callback

Преимущества push сервиса

Для вас преимущества данной схемы заключаются в том, что комет сервер берёт на себя всю тяжесть обслуживания постоянно открытых соединений, тем самым разгружая инфраструктуру вашего сайта. Комет сервер написан на C++ специально для обслуживания очень большого количества постоянно открытых соединений с браузерами и отлично справляется с поставленной задачей.

А почему нельзя использовать PHP?

А почему нельзя использовать PHP? Да собственно можно и на PHP реализовать push уведомления, но только потребление памяти и скорость работы у PHP значительно ниже, а нагрузка на сервер будет большой. Именно поэтому рекомендуется использовать специализированные инструменты.

Применения для уведомлений

  • Online чаты
  • Уведомления о событиях
  • Браузерные многопользовательские игры
  • Графики обновляемые в реальном времени
  • Совместное редактирование документов
  • Отправка сообщений по инициативе сервера определённому пользователю (по его id)
  • Отправка сообщений по инициативе сервера всем пользователям которые подписались на канал
  • Определение онлайн пользователь или нет в данный конкретный момент
  • Получение статистики в реальном времени о общем количестве человек online

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
L S A K K