Pusher: хоствана услуга за двупосочна комуникация в реално време, предоставяща инфраструктура за канали, събития и webhook известия. Тя освобождава разработчика от необходимостта да разгръща собствен WebSocket сървър и осигурява доставка на съобщения до милиони устройства. Според официалната документация на Pusher (2025), услугата обработва над 40 милиарда съобщения месечно по целия свят.
Основни точки
Pusher — облачна услуга за двупосочна комуникация в реално време, основана през 2011 г. Тя предоставя готова инфраструктура за изпращане и получаване на съобщения в реално време, без да е необходимо да управлявате собствен WebSocket сървър. Pusher се използва за изграждане на чатове, живи известия, съвместно редактиране и класации в игри.
За разлика от библиотеки като Socket.IO, които изискват разгръщане и поддръжка на собствен сървър, Pusher работи по модела SaaS (Software as a Service). Разработчикът се регистрира, получава ключове (app_id, key, secret) и използва REST API на Pusher за публикуване на събития. Сървърната инфраструктура се управлява изцяло от платформата Pusher.
Според официалния блог на Pusher (2025), платформата обслужва над 250 000 активни проекта по целия свят. Сред известните клиенти са GitHub (известия в реално време), Trello (синхронизация на табла) и Intercom (чат за поддръжка). Pusher поддържа центрове за данни в САЩ, Европа и Азия за минимизиране на закъсненията.
Pusher стартира през 2011 г. като една от първите хоствани услуги за WebSocket. През 2014 г. компанията представи Pusher Channels — текущата архитектура с поддръжка на private и presence канали. През 2017 г. беше добавена поддръжка на webhook за сървърни събития. През 2022 г. Pusher пусна Pusher Beams — услуга за push известия за мобилни платформи.
Архитектурата на Pusher се различава от self-hosted решенията по това, че цялата обработка на абонаменти, управлението на връзките и маршрутизирането на събития се извършва от страна на Pusher Cloud. Разработчикът управлява само удостоверяването на private канали чрез своя backend.
Архитектурата на Pusher се основава на модела Publisher-Subscriber. Сървърните приложения публикуват събития чрез REST API на Pusher, а клиентските приложения ги получават чрез постоянна WebSocket връзка. Pusher действа като посредник между издатели и абонати.
Когато сървърът изпрати събитие чрез POST заявка към API на Pusher, платформата определя целевия канал и разпространява съобщението до всички клиенти, абонирани за този канал. Клиентите получават събитието чрез вече отворената WebSocket връзка, което осигурява закъснение от 50–100 ms в зависимост от географското местоположение.
Всеки клиент установява връзка чрез Pusher Client SDK, който автоматично избира транспорта (WebSocket — приоритет, HTTP long-polling — fallback). SDK управлява повторното свързване, сериализацията на данни и обработката на грешки без участието на разработчика. Според техническата документация на Pusher (2025), времето за повторно свързване при прекъсване на мрежата е по-малко от 1 секунда.
Системата се състои от три компонента: Pusher Server API (REST крайни точки за публикуване на събития), Pusher Client SDK (библиотеки за абониране за събития) и Pusher WebHook (сървърни известия за събития на свързване/прекъсване). Всички компоненти работят асинхронно и независимо.
Pusher Channels поддържа три типа канали, всеки от които е предназначен за различни сценарии на използване. Изборът на тип канал определя нивото на достъп, механизма за удостоверяване и наличните възможности.
| Тип канал | Префикс | Удостоверяване | Употреба |
|---|---|---|---|
| Public | channel- | Не се изисква | Публични данни: валутни курсове, време, новинарски поток |
| Private | private- | Подпис на заявката на сървъра | Лични известия, чатове, потребителски данни |
| Presence | presence- | Подпис + информация за потребителя | Онлайн статус, игрални стаи, съвместно редактиране |
Public каналите са достъпни за всички клиенти без удостоверяване и са подходящи за излъчвани данни. Private каналите изискват удостоверяване чрез сървъра на разработчика: клиентът изпраща заявка до своя backend с socket_id и channel_name, сървърът подписва заявката с тайния ключ на Pusher и връща auth токен. Presence каналите допълнително предават информация за потребителя (user_id, user_info) и позволяват проследяване кой е онлайн.
Според документацията на Pusher (2025), максималният брой едновременно свързани клиенти на един канал е 10 000 за public и private канали. За presence каналите ограничението е 10 000 потребители на канал с поддръжка до 100 000 потребители на приложение.
Моделът на събитията на Pusher се основава на именувани събития, които се публикуват в канал. Всяко събитие има име (максимум 200 знака), данни във формат JSON и незадължителен socket_id за изключване на повторното изпращане до инициатора на събитието.
Тригерите — това са HTTP POST заявки към API на Pusher, които публикуват събитие в канал. Формат на заявката: POST /apps/{app_id}/events с тяло, съдържащо channel, name и data. Pusher Server API поддържа тригери от всяка сървърна среда чрез официални библиотеки (PHP, Ruby, Python, Go, Java, Node.js).
Pusher поддържа batch тригери — публикуване на едно събитие в няколко канала с една заявка. Това е по-ефективно от последователните извиквания и гарантира атомарност на доставката. Според тестовете за производителност на Pusher (2024), batch тригер на 100 канала отнема 30–50 ms, докато последователните извиквания отнемат 2–5 секунди.
Pusher WebHook позволява на вашия сървър да получава известия за инфраструктурни събития: свързване на клиент, прекъсване, възникване на грешка. Webhook заявките се подписват с HMAC-SHA256 за верификация. Това е от решаващо значение за регистриране, анализи и синхронизация на състоянието.
Интеграцията на Pusher се състои от две части: сървърна (публикуване на събития) и клиентска (абониране за събития). Нека разгледаме пример на Node.js за сървърната част и JavaScript за клиентската част. За начало трябва да създадете приложение в таблото за управление на Pusher и да получите идентификационни данни.
Според документацията на Pusher (2025), основният план (Sandbox) включва до 100 едновременни връзки и 200 000 съобщения на ден — достатъчно за разработка и тестване. Производствените планове започват от $49 на месец за 1000 връзки.
const Pusher = require('pusher');
const pusher = new Pusher({
appId: 'YOUR_APP_ID',
key: 'YOUR_KEY',
secret: 'YOUR_SECRET',
cluster: 'eu',
useTLS: true
});
pusher.trigger('my-channel', 'my-event', {
message: 'Hello from server',
timestamp: Date.now()
}).then(() => {
console.log('Събитие публикувано');
}).catch(console.error);
import Pusher from 'pusher-js';
const pusher = new Pusher('YOUR_KEY', {
cluster: 'eu',
forceTLS: true
});
const channel = pusher.subscribe('my-channel');
channel.bind('my-event', (data) => {
console.log('Получено събитие:', data);
displayNotification(data.message);
});
Pusher предоставя SDK за iOS (Swift) и Android (Java/Kotlin), които напълно възпроизвеждат функционалността на JavaScript клиента. Мобилните SDK поддържат същите типове канали, механизъм за удостоверяване и модел на събития. За React Native е наличен пакетът pusher-js, който работи чрез JavaScript мост.
На мобилни устройства Pusher SDK автоматично обработва превключването между Wi-Fi и мобилна мрежа, използвайки механизъм за повторно свързване с експоненциално закъснение. Това е особено важно за iOS приложения, където iOS може принудително да затваря WebSocket връзки при фонова работа.
Според техническия блог на Pusher (2024), средната консумация на трафик на една Pusher връзка е 1–2 KB на минута при липса на активни събития. Това се постига чрез оптимизиран heartbeat протокол с интервал от 30 секунди. Приложение със среден размер може да поддържа до 1000 едновременни Pusher връзки без значително влияние върху консумацията на батерия.
Pusher Beams — допълнителна услуга за изпращане на push известия до мобилни устройства чрез APNs (iOS) и FCM (Android). Beams се интегрира с Pusher Channels: събитие от канал може автоматично да задейства push известие, ако клиентът е офлайн. Това решава проблема с доставката на съобщения, когато приложението е затворено.
Сигурността на Pusher е реализирана на няколко нива. Всяка заявка към Pusher API се подписва с HMAC-SHA256, използвайки app_secret. Това гарантира, че само оторизиран сървър може да публикува събития. Клиентските SDK използват app_key за идентификация на приложението, но за достъп до private и presence канали е необходимо допълнително удостоверяване.
Удостоверяването на private канали става в три стъпки: клиентът извиква pusher.subscribe('private-channel'), Pusher Client SDK изпраща HTTP заявка до вашата backend крайна точка (/pusher/auth), сървърът проверява правата на потребителя и връща auth токен, подписан с тайния ключ. Pusher проверява подписа и разрешава абонамента.
Препоръчва се използването на TLS връзки за всички заявки (настройка useTLS: true в SDK). Pusher също поддържа ограничаване на достъпа по IP адреси за сървърни заявки към REST API. За enterprise тарифи е налична поддръжка за VPC (Virtual Private Cloud) и специални клъстери с изолирана инфраструктура.
Често задавани въпроси
Pusher — е хоствана услуга (SaaS), която не изисква управление на сървър. Socket.IO — е библиотека, която трябва да разгърнете сами. Pusher е по-лесен за настройка, но по-скъп при мащабиране. Socket.IO изисква DevOps работа, но е по-евтин при голям обем.
Безплатният план Sandbox включва 100 връзки и 200 000 съобщения на ден. Производствените планове започват от $49/месец (1000 връзки, неограничени съобщения) до enterprise с индивидуални условия.
Pusher използва WebSocket с автоматичен fallback към HTTP long-polling. За критични съобщения е налична опашка от страна на Pusher с гаранция за доставка поне веднъж (at-least-once).
Да, Pusher е достъпен от Русия чрез европейския клъстер (eu). Закъснението е 50–100 ms за европейски центрове за данни. За проекти с изисквания за локализация на данни се препоръчва разглеждане на алтернативи.
Основните конкуренти са Ably (подобна функционалност, по-гъвкави тарифи), PubNub (глобална мрежа за доставка), Socket.IO (self-hosted) и Firebase Realtime Database (екосистема на Google).
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също