Pull to refresh

Простая real-time коммуникация с посетителем

Reading time 2 min
Views 8.5K
Я давно интересуюсь вебом в реальном времени. На сегодня уже есть ряд библиотек для этого. В этом топике я хочу рассказать про недавно опробованный нами самый простой способ — использование внешнего сервиса Pusher.com.

Если сегодня асинхронно отправить сообщение на сервер проще простого, то с обратным транспортом пока не все так радужно. Сервис как раз берет на себя эту задачу.


Все работает очень просто. На страницу вставляется JavaScript пушера, он открывает подключение к серверам пушера и подписывается на сообщения по какому-нибудь каналу. Когда вы хотите отправить сообщение, вы вызываете API пушера и отправляете сообщение в канал. Все пользователи, подписавшиеся на канал, его получат.
Таким образом можно очень легко организовать массовую рассылку сообщений всем нужным пользователям в онлайне. Что позволяет очень просто создать чат — достаточно вставить пушер на страницу, скрипт на вашем сервере будет принимать сообщения POST-ом, «дергать» API Pusher`a, а тот будет рассылать их всем клиентам через веб сокеты. Аналогично можно сделать и более сложные вещи, например, совместные графические редакторы — все есть в примерах и документации.

От себя замечу — мы несколько месяцев назад перевели чат и онлайны на пушер, тем самым решили сразу несколько проблем:
— значительно ускорили доставку сообщений
— снизили пользователям трафик
— уменьшили нагрузку на на наши сервера — теперь мы только принимаем сообщения, а рассылкой по пользователям занимается пушер
— улучшили масштабируемость системы

Когда переходили, были некоторые сомнения — не столкнутся ли пользователи с проблемами. Насколько хорошо будут поддерживаться разные браузеры. Опасения были напрасными — пушер использует WebSockets, а при их недоступности (например, в древних недобраузерах ИЕ) старую добрую эмуляцию через Flash Sockets — именно то, что я использовал в своем модельном чате на вебсокетах. Практика показала, что этого достаточно. Усложнять и деградировать до Long Polling, Multi Part и прочего не требуется.

Недавно мы решили использовать его еще в одном более сложном проекте.
Если интересно, то как реализуем, подробно опишу.

Подведем итог

Плюсы:
— очень просто поключать к сайту — есть готовые либы на PHP и Python
— если нет готовых либ для вашего языка, то можно использовать простое API, для этого достаточно curl`a
— снимает проблему масштабирования — пушер размещается на серверах Амазона

Минусы:
— платный
Tags:
Hubs:
+6
Comments 18
Comments Comments 18

Articles