PubNub — o rețea globală pentru mesagerie în timp real, care oferă infrastructură pentru publicarea și abonarea la mesaje prin WebSocket cu latență minimă. Este destinată aplicațiilor care necesită livrare fiabilă a datelor la sarcină mare și conexiune instabilă. Conform documentației oficiale PubNub (2025), platforma procesează peste 1 trilion de mesaje lunar pentru 70 000+ de aplicații din întreaga lume.
Principalele puncte
PubNub — o rețea globală de transmitere a datelor în timp real, fondată în 2010. Oferă API pentru publicarea și abonarea la mesaje, precum și servicii suplimentare: stocarea istoricului, gestionarea prezenței, funcții serverless (PubNub Functions) și analitică a fluxurilor de date.
Arhitectura PubNub se bazează pe o rețea distribuită de puncte de prezență (POP) situate în 15+ regiuni geografice. Fiecare punct conține brokeri de cache care dirijează mesajele între editori și abonați cu latență minimă. PubNub nu utilizează un broker central unic — fiecare regiune funcționează independent și se sincronizează prin rețeaua globală.
Conform site-ului oficial PubNub (2025), platforma deservește peste 70 000 de aplicații în 200+ de țări. Printre clienții cheie se numără Logitech (gestionarea dispozitivelor IoT), GoPro (transmisie video în timp real), eBay (sincronizarea licitațiilor) și Snapchat (chat și notificări).
PubNub este construit pe trei principii: viteză (latență sub 10 ms în percentila 95 în cadrul unei singure regiuni), fiabilitate (garanție de livrare at-least-once cu reîncercare automată) și scalabilitate (extindere orizontală fără limită a numărului de canale). Platforma nu stochează mesajele în stocare pe termen lung — istoricul este accesibil prin serviciul conectabil separat Storage & Playback.
Modelul de funcționare PubNub se bazează pe modelul clasic publish-subscribe. Clientul editorului trimite un mesaj specificând canalul prin PubNub REST API cu cheia publish. PubNub livrează mesajul tuturor abonaților acestui canal prin conexiunile lor WebSocket active. Abonații primesc mesajul printr-un callback înregistrat în PubNub SDK.
Stratul de transport PubNub utilizează WebSocket ca protocol principal, cu fallback la HTTP long-polling pentru medii cu restricții. SDK gestionează automat conexiunea: stabilește, menține heartbeat (la fiecare 15–60 de secunde în funcție de rețea) și se reconectează la întrerupere.
Fiecare mesaj în PubNub conține metadate: UUID-ul expeditorului, marcaj temporal, număr de ordine (timetoken) și flaguri (store, replicate, eatAfterRead). Timetoken — un identificator unic PubNub bazat pe timp, care garantează ordinea globală a mesajelor în canal. Conform documentației PubNub (2025), timetoken are o rezoluție de 10 nanosecunde.
Când un client publică un mesaj, acesta trece prin Stream Controller — modulul de rutare PubNub. Stream Controller verifică drepturile de acces (PAM), aplică reguli de transformare (PubNub Functions), determină regiunile țintă și trimite mesajul tuturor abonaților. Dacă un abonat este deconectat, mesajul este bufferizat timp de 30 de secunde (implicit) în așteptarea restabilirii conexiunii.
Sistemul de chei PubNub împarte drepturile de acces în trei niveluri: cheia publish (doar publicare), cheia subscribe (doar abonare) și cheia secret (administrare). Fiecare aplicație primește un set de trei chei la înregistrare, dar cheia secret nu este niciodată transmisă clientului — este utilizată doar pe partea de server.
Cheia publish este utilizată pentru trimiterea mesajelor în canale. Cheia subscribe — pentru abonarea la canale și primirea mesajelor. Cheia secret — pentru gestionarea accesului prin PubNub Access Manager (PAM), crearea de tokenuri temporare de audiență și administrarea cheilor. Cheia secret este stocată în siguranță pe server și nu este dezvăluită niciodată clienților.
PubNub suportă mai multe moduri de autentificare: după adresa IP (pentru servere), după cheia secretă (pentru operații administrative), după tokenuri temporare (pentru clienți). Tokenurile temporare sunt emise prin PAM cu limitare de timp, canale și drepturi (read, write, manage).
Canalurile PubNub — rute denumite pentru mesaje. Numele canalului este un șir de până la 92 de caractere, care suportă litere latine, cifre, cratime și underscore. Canalurile sunt create dinamic la prima publicare sau abonare. PubNub suportă șabloane de canale prin simbolul * în cererea subscribe — aceasta permite abonarea la un grup de canale (de exemplu, user-*).
Channel Groups — mecanism de grupare a canalelor pentru abonare în masă. În loc să se aboneze la 50 de canale separate, clientul se abonează la un singur grup, iar toate mesajele din canalele incluse sunt livrate automat clientului. Channel Groups suportă imbricarea, dar adâncimea nu trebuie să depășească 3 niveluri.
Conform documentației tehnice PubNub (2025), numărul maxim de abonați pe un canal este de 50 000. Pentru sarcini mai mari, se recomandă utilizarea canalelor cu prefixe și șarjarea audienței (de exemplu, chat-room-001, chat-room-002). Channel Groups pot fi, de asemenea, organizate după principiul geografic sau tematic.
| Parametru | Maxim | Notă |
|---|---|---|
| Lungimea numelui canalului | 92 de caractere | Litere latine, cifre, -, _ |
| Abonați pe canal | 50 000 | Mai mult — șarjați |
| Channel Groups | 2000 de grupuri / cheie | Până la 500 de canale în grup |
| Istoric (storage) | Fără limită | Plată pentru volumul de stocare |
Integrarea PubNub necesită înregistrare, crearea unei aplicații în panoul de administrare și obținerea unui set de chei. Bibliotecile PubNub sunt disponibile pentru JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go și multe alte limbaje. Să examinăm un exemplu în JavaScript pentru browser și Node.js.
Conform documentației PubNub (2025), biblioteca pubnub-js suportă atât CommonJS, cât și import ES Module. Pentru browser, se recomandă instalarea prin npm și apoi bundling cu webpack sau vite.
import PubNub from 'pubnub';
const pubnub = new PubNub({
publishKey: 'PUBLISH_KEY',
subscribeKey: 'SUBSCRIBE_KEY',
userId: 'user-100'
});
pubnub.subscribe({
channels: ['chat-general']
});
pubnub.addListener({
message: (event) => {
console.log('Mesaj nou:', event.message);
},
presence: (event) => {
console.log('Prezență:', event.uuid, event.action);
}
});
pubnub.publish({
channel: 'chat-general',
message: { text: 'Hello everyone!', sender: 'user-100' }
});
pubnub.fetchMessages(
{ channels: ['chat-general'], count: 50 },
(status, response) => {
if (status.error) {
console.error('Eroare la preluarea istoricului', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions — platformă serverless pentru procesarea mesajelor pe partea PubNub. Funcțiile sunt scrise în JavaScript și executate într-un mediu izolat securizat (V8 isolate). Ele pot transforma, filtra, bufferiza și redirecționa mesajele înainte de a fi livrate abonaților.
Stream Controller — mecanism de rutare încorporat care gestionează fluxul de mesaje pe baza regulilor. Regulile determină care mesaje sunt livrate, care sunt eliminate și care sunt direcționate către PubNub Functions pentru procesare. Stream Controller suportă rutarea condiționată după conținutul mesajului, tipul canalului sau metadate.
Conform blogului PubNub (2024), PubNub Functions reduc costurile infrastructurii server pentru procesarea mesajelor cu 40–60% datorită faptului că logica de filtrare și transformare este executată pe nodurile de margine PubNub, nu pe propriul server. Funcțiile au acces la cereri HTTP, stocare Key-Value și alte funcții în același spațiu.
PubNub SDK pentru platforme mobile sunt disponibile pentru iOS (Swift), Android (Kotlin/Java), Flutter (Dart) și React Native (JavaScript). SDK-urile mobile suportă setul complet de funcții: pub/sub, prezență, istoric, PAM și PubNub Functions. Pentru notificări push, PubNub se integrează cu APNs și FCM printr-un mecanism special mobile push gateway.
Optimizarea pentru dispozitive mobile include heartbeat adaptiv, procesare în lot a mesajelor și suport pentru modurile de fundal. PubNub SDK pentru iOS utilizează Background Task API pentru menținerea conexiunii când aplicația este minimizată (până la 30 de secunde de timp standard de fundal). Pentru o activitate de fundal mai lungă, este necesară utilizarea notificărilor push.
Mobile Push Gateway — mecanism de trimitere a notificărilor push prin PubNub. Când un mesaj este publicat într-un canal, PubNub determină automat care abonați sunt offline și le trimite o notificare push prin APNs (iOS) sau FCM (Android). Configurarea se face o singură dată în panoul de administrare — după aceea, toate mesajele din canal sunt duplicate automat în canalul push. Conform documentației PubNub (2025), gateway-ul procesează până la 10 000 de notificări push pe secundă.
Întrebări frecvente
PubNub oferă mai multe SDK-uri (75+ platforme), funcții serverless încorporate și Stream Controller pentru procesarea mesajelor. Pusher este mai simplu de configurat, dar PubNub oferă mai mult control asupra rutării și transformării datelor.
PubNub utilizează mecanismul at-least-once cu reîncercare automată la erori. Fiecare mesaj are un timetoken unic pentru deduplicare. Mesajele sunt bufferizate timp de 30 de secunde pentru abonații offline.
Planul gratuit include 100 de conexiuni simultane și 1 milion de mesaje pe lună. Planurile plătite încep de la $49/lună pentru 1000 de conexiuni simultane cu număr nelimitat de mesaje.
Da, PubNub suportă TLS 1.3 pentru toate conexiunile și criptarea opțională end-to-end pe client (AES-256) cu gestionarea cheilor prin PAM. Pentru clienții enterprise, este disponibil modul Cipher Key.
PubNub oferă SDK-uri pentru 75+ platforme, inclusiv JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust și Objective-C. Acesta este cel mai mare ecosistem printre serviciile în timp real.
Concluzii
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