Как стать автором
Обновить

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

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

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


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

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

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

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

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

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

Минусы:
— платный
Теги:
Хабы:
+6
Комментарии 18
Комментарии Комментарии 18

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн