Pusher: хостовани сервис за двосмерну комуникацију у реалном времену, који пружа инфраструктуру за канале, догађаје и вебхук обавештења. Ослобађа програмера потребе за постављањем сопственог 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 захтева ка Pusher API-ју, платформа одређује циљни канал и шаље поруку свим клијентима претплаћеним на тај канал. Клијенти примају догађај преко већ отворене 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 за искључивање поновног слања иницијатору догађаја.
Окидачи (trigger) — то су HTTP POST захтеви ка Pusher API-ју који објављују догађај у каналу. Формат захтева: 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 порука дневно — довољно за развој и тестирање. Production планови почињу од $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 порука дневно. Production планови почињу од $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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође