Pusher: serviciu găzduit pentru comunicare bidirecțională în timp real, care oferă infrastructură pentru canale, evenimente și notificări webhook. Acesta eliberează dezvoltatorul de necesitatea de a implementa propriul server WebSocket și asigură livrarea mesajelor către milioane de dispozitive. Conform documentației oficiale Pusher (2025), serviciul procesează peste 40 de miliarde de mesaje lunar la nivel global.
Principalele puncte
Pusher — serviciu cloud pentru comunicare bidirecțională în timp real, fondat în 2011. Oferă infrastructură gata pregătită pentru trimiterea și primirea mesajelor în timp real fără a fi nevoie să gestionezi propriul server WebSocket. Pusher este utilizat pentru construirea de chaturi, notificări live, editare colaborativă și clasamente de jocuri.
Spre deosebire de bibliotecile precum Socket.IO, care necesită implementarea și întreținerea propriului server, Pusher funcționează pe modelul SaaS (Software as a Service). Dezvoltatorul se înregistrează, primește chei (app_id, key, secret) și utilizează REST API Pusher pentru a publica evenimente. Infrastructura de server este gestionată complet de platforma Pusher.
Conform blogului oficial Pusher (2025), platforma deservește peste 250.000 de proiecte active la nivel global. Printre clienții cunoscuți se numără GitHub (notificări în timp real), Trello (sincronizarea panourilor) și Intercom (chat de asistență). Pusher suportă centre de date în SUA, Europa și Asia pentru minimizarea întârzierilor.
Pusher a fost lansat în 2011 ca unul dintre primele servicii găzduite pentru WebSocket. În 2014, compania a introdus Pusher Channels — arhitectura actuală cu suport pentru canale private și presence. În 2017, a fost adăugat suportul pentru webhook pentru evenimente de server. În 2022, Pusher a lansat Pusher Beams — serviciu de notificări push pentru platforme mobile.
Arhitectura Pusher diferă de soluțiile self-hosted prin faptul că întreaga procesare a abonamentelor, gestionarea conexiunilor și rutarea evenimentelor are loc pe partea Pusher Cloud. Dezvoltatorul gestionează doar autentificarea canalelor private prin propriul backend.
Arhitectura Pusher se bazează pe modelul Publisher-Subscriber. Aplicațiile server publică evenimente prin REST API Pusher, iar aplicațiile client le primesc printr-o conexiune WebSocket permanentă. Pusher acționează ca intermediar între editori și abonați.
Când serverul trimite un eveniment printr-o cerere POST către API Pusher, platforma determină canalul țintă și difuzează mesajul tuturor clienților abonați la acel canal. Clienții primesc evenimentul prin conexiunea WebSocket deja deschisă, ceea ce asigură o latență de 50–100 ms în funcție de locația geografică.
Fiecare client stabilește conexiunea prin Pusher Client SDK, care selectează automat transportul (WebSocket — prioritate, HTTP long-polling — fallback). SDK gestionează reconectarea, serializarea datelor și gestionarea erorilor fără intervenția dezvoltatorului. Conform documentației tehnice Pusher (2025), timpul de reconectare la întreruperea rețelei este sub 1 secundă.
Sistemul constă din trei componente: Pusher Server API (puncte terminale REST pentru publicarea evenimentelor), Pusher Client SDK (biblioteci pentru abonarea la evenimente) și Pusher WebHook (notificări ale serverului despre evenimente de conectare/deconectare). Toate componentele funcționează asincron și independent.
Pusher Channels suportă trei tipuri de canale, fiecare destinat unor scenarii de utilizare diferite. Alegerea tipului de canal determină nivelul de acces, mecanismul de autentificare și capacitățile disponibile.
| Tip canal | Prefix | Autentificare | Utilizare |
|---|---|---|---|
| Public | channel- | Nu este necesară | Date publice: cursuri valutare, vreme, flux știri |
| Private | private- | Semnarea cererii pe server | Notificări personale, chaturi, date utilizator |
| Presence | presence- | Semnătură + informații utilizator | Status online, camere de joc, editare colaborativă |
Canalele Public sunt accesibile tuturor clienților fără autentificare și sunt potrivite pentru date de difuzare. Canalele Private necesită autentificare prin serverul dezvoltatorului: clientul trimite o cerere către backend-ul său cu socket_id și channel_name, serverul semnează cererea cu cheia secretă Pusher și returnează un token de autentificare. Canalele Presence transmit suplimentar informații despre utilizator (user_id, user_info) și permit urmărirea cine este online.
Conform documentației Pusher (2025), numărul maxim de clienți conectați simultan pe un canal este de 10.000 pentru canalele public și private. Pentru canalele presence, limita este de 10.000 de utilizatori per canal cu suport pentru până la 100.000 de utilizatori per aplicație.
Modelul de evenimente Pusher se bazează pe evenimente denumite care sunt publicate într-un canal. Fiecare eveniment are un nume (maximum 200 de caractere), date în format JSON și un socket_id opțional pentru a exclude retrimiterea către inițiatorul evenimentului.
Declanșatoarele (trigger) — sunt cereri HTTP POST către API Pusher care publică un eveniment într-un canal. Formatul cererii: POST /apps/{app_id}/events cu corpul conținând channel, name și data. Pusher Server API suportă declanșatoare din orice mediu server prin biblioteci oficiale (PHP, Ruby, Python, Go, Java, Node.js).
Pusher suportă declanșatoare batch — publicarea unui eveniment în mai multe canale printr-o singură cerere. Aceasta este mai eficientă decât apelurile secvențiale și garantează atomicitatea livrării. Conform testelor de performanță Pusher (2024), declanșatorul batch pe 100 de canale durează 30–50 ms, în timp ce apelurile secvențiale — 2–5 secunde.
Pusher WebHook permite serverului tău să primească notificări despre evenimente de infrastructură: conectarea clientului, deconectarea, apariția unei erori. Cererile Webhook sunt semnate cu HMAC-SHA256 pentru verificare. Acest lucru este esențial pentru logare, analitică și sincronizarea stării.
Integrarea Pusher constă din două părți: partea de server (publicarea evenimentelor) și partea de client (abonarea la evenimente). Să analizăm un exemplu pe Node.js pentru partea de server și JavaScript pentru partea de client. Pentru început, trebuie să creezi o aplicație în panoul Pusher și să obții datele de autentificare.
Conform documentației Pusher (2025), planul de bază (Sandbox) include până la 100 de conexiuni simultane și 200.000 de mesaje pe zi — suficient pentru dezvoltare și testare. Planurile de producție încep de la $49 pe lună pentru 1000 de conexiuni.
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('Eveniment publicat');
}).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('Eveniment primit:', data);
displayNotification(data.message);
});
Pusher oferă SDK pentru iOS (Swift) și Android (Java/Kotlin), care reproduc complet funcționalitatea clientului JavaScript. SDK-urile mobile suportă aceleași tipuri de canale, mecanismul de autentificare și modelul de evenimente. Pentru React Native este disponibil pachetul pusher-js care funcționează prin puntea JavaScript.
Pe dispozitivele mobile, Pusher SDK gestionează automat comutarea între Wi-Fi și rețeaua mobilă, folosind un mecanism de reconectare cu întârziere exponențială. Acest lucru este deosebit de important pentru aplicațiile iOS, unde iOS poate închide forțat conexiunile WebSocket în timpul funcționării în fundal.
Conform blogului tehnic Pusher (2024), consumul mediu de trafic al unei conexiuni Pusher este de 1–2 KB pe minut în absența evenimentelor active. Acest lucru se realizează printr-un protocol heartbeat optimizat cu un interval de 30 de secunde. O aplicație de dimensiune medie poate suporta până la 1000 de conexiuni Pusher simultane fără un impact semnificativ asupra consumului bateriei.
Pusher Beams — serviciu suplimentar pentru trimiterea de notificări push pe dispozitive mobile prin APNs (iOS) și FCM (Android). Beams se integrează cu Pusher Channels: un eveniment dintr-un canal poate declanșa automat o notificare push dacă clientul este offline. Aceasta rezolvă problema livrării mesajelor atunci când aplicația este închisă.
Securitatea Pusher este implementată la mai multe niveluri. Fiecare cerere către API Pusher este semnată cu HMAC-SHA256 folosind app_secret. Aceasta garantează că doar un server autorizat poate publica evenimente. SDK-urile client folosesc app_key pentru identificarea aplicației, dar pentru accesul la canalele private și presence este necesară autentificare suplimentară.
Autentificarea canalelor private are loc în trei pași: clientul apelează pusher.subscribe('private-channel'), Pusher Client SDK trimite o cerere HTTP către punctul terminal al backend-ului tău (/pusher/auth), serverul verifică drepturile utilizatorului și returnează un token de autentificare semnat cu cheia secretă. Pusher verifică semnătura și permite abonarea.
Se recomandă utilizarea conexiunilor TLS pentru toate cererile (setarea useTLS: true în SDK). Pusher suportă de asemenea restricționarea accesului după adrese IP pentru cererile de server către REST API. Pentru tarifele enterprise, este disponibil suportul pentru VPC (Virtual Private Cloud) și clustere dedicate cu infrastructură izolată.
Întrebări frecvente
Pusher — este un serviciu găzduit (SaaS) care nu necesită gestionarea serverului. Socket.IO — este o bibliotecă pe care trebuie să o implementezi singur. Pusher este mai simplu de configurat, dar mai scump la scalare, Socket.IO necesită muncă DevOps, dar este mai ieftin la volum mare.
Planul gratuit Sandbox include 100 de conexiuni și 200.000 de mesaje pe zi. Planurile de producție încep de la $49/lună (1000 de conexiuni, mesaje nelimitate) până la enterprise cu condiții individuale.
Pusher utilizează WebSocket cu fallback automat pe HTTP long-polling. Pentru mesajele critice, este disponibilă o coadă pe partea Pusher cu garanția livrării cel puțin o dată (at-least-once).
Da, Pusher este accesibil din Rusia prin clusterul european (eu). Întârzierea este de 50–100 ms pentru centrele de date europene. Pentru proiecte cu cerințe de localizare a datelor, se recomandă luarea în considerare a alternativelor.
Principalii concurenți sunt Ably (funcționalitate similară, tarife mai flexibile), PubNub (rețea globală de livrare), Socket.IO (self-hosted) și Firebase Realtime Database (ecosistem Google).
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și