RU::001-Введение
Header:Введение
====== Технология Comet ======
Технология Comet — позволяет отправлять произвольные сообщения клиенту (в браузер) по инициативе сервера, это и называется push notifications или по-русски push уведомления.
Данная возможность достигается путём поддержания постоянного соединения браузера с Comet сервером. То есть, для того, чтобы мы могли отправить push уведомление в браузер посетителя, необходимо поддерживать постоянное соединение. Для этого используется технология websocket, а в тех браузерах, которые не поддерживают websocketes используется механизм long polling ajax запросов.
====== Как работают push уведомления. ======
На схеме изображено место комет сервера в процессе работы. Взаимодействие построено следующим образом.
- Браузер открывает страницу вашего сайта
- После загрузки страницы JavaScript устанавливает постоянное соединение с comet сервером.
- Пока открыта страница ваш сервер может отправить произвольное сообщение клиенту. Для этого он обращается с помощью PHP Api к комет серверу и передаёт ему сообщение для браузера.
- Комет сервер используя открытое соединение с браузером доставляет полученное сообщение в браузер.
- JavaScript Api полученное от сервера сообщение предаёт в ваш callback
{{ ::scheme-of-comet-using.gif |}}
====== Преимущества push сервиса ======
Для вас преимущества данной схемы заключаются в том, что комет сервер берёт на себя всю тяжесть обслуживания постоянно открытых соединений, тем самым разгружая инфраструктуру вашего сайта. Комет сервер написан на C++ специально для обслуживания очень большого количества постоянно открытых соединений с браузерами и отлично справляется с поставленной задачей.
====== А почему нельзя использовать PHP? ======
А почему нельзя использовать PHP? Да собственно можно и на PHP реализовать push уведомления, но только потребление памяти и скорость работы у PHP значительно ниже, а нагрузка на сервер будет большой. Именно поэтому рекомендуется использовать специализированные инструменты.
====== Применения для уведомлений ======
* Online чаты
* Уведомления о событиях
* Браузерные многопользовательские игры
* Графики обновляемые в реальном времени
* Совместное редактирование документов
* Отправка сообщений по инициативе сервера определённому пользователю (по его id)
* Отправка сообщений по инициативе сервера всем пользователям которые подписались на канал
* Определение онлайн пользователь или нет в данный конкретный момент
* Получение статистики в реальном времени о общем количестве человек online