PubNub — globální síť pro zasílání zpráv v reálném čase, která poskytuje infrastrukturu pro publikování a přihlašování k odběru zpráv prostřednictvím WebSocketu s minimální latencí. Je určena pro aplikace vyžadující spolehlivé doručování dat při vysokém zatížení a nestabilním připojení. Podle oficiální dokumentace PubNub (2025) platforma zpracovává měsíčně více než 1 bilion zpráv pro 70 000+ aplikací po celém světě.
Hlavní body
PubNub — globální síť pro přenos dat v reálném čase, založená v roce 2010. Poskytuje API pro publikování a přihlašování k odběru zpráv, stejně jako doplňkové služby: ukládání historie, správu přítomnosti, funkce serverless (PubNub Functions) a analýzu datových toků.
Architektura PubNub je založena na distribuované síti přítomných bodů (POP) umístěných v 15+ geografických regionech. Každý bod obsahuje kešovací brokery, které směrují zprávy mezi vydavateli a odběrateli s minimální latencí. PubNub nepoužívá jediného centrálního brokera — každý region pracuje nezávisle a synchronizuje se prostřednictvím globální sítě.
Podle oficiálních stránek PubNub (2025) platforma obsluhuje více než 70 000 aplikací ve 200+ zemích. Mezi klíčové klienty patří Logitech (správa IoT zařízení), GoPro (vysílání videa v reálném čase), eBay (synchronizace aukcí) a Snapchat (chat a oznámení).
PubNub je postaven na třech principech: rychlost (latence menší než 10 ms v 95. percentilu v rámci jednoho regionu), spolehlivost (záruka doručení at-least-once s automatickým opakováním) a škálovatelnost (horizontální rozšiřování bez omezení počtu kanálů). Platforma neukládá zprávy do dlouhodobého úložiště — historie je přístupná prostřednictvím samostatně připojitelné služby Storage & Playback.
Model fungování PubNub je založen na klasickém vzoru publish-subscribe. Klientský vydavatel odešle zprávu s uvedením kanálu prostřednictvím PubNub REST API s publish klíčem. PubNub doručí zprávu všem odběratelům tohoto kanálu prostřednictvím jejich aktivních WebSocket připojení. Odběratelé obdrží zprávu prostřednictvím callback handleru registrovaného v PubNub SDK.
Transportní vrstva PubNub používá WebSocket jako primární protokol s fallbackem na HTTP long-polling pro prostředí s omezeními. SDK automaticky spravuje připojení: navazuje, udržuje heartbeat (každých 15–60 sekund v závislosti na síti) a znovu se připojuje při přerušení.
Každá zpráva v PubNub obsahuje metadata: UUID odesílatele, časové razítko, pořadové číslo (timetoken) a příznaky (store, replicate, eatAfterRead). Timetoken — jedinečný identifikátor PubNub založený na čase, který zaručuje globální pořadí zpráv v kanálu. Podle dokumentace PubNub (2025) má timetoken rozlišení 10 nanosekund.
Když klient publikuje zprávu, prochází Stream Controllerem — modulem pro směrování PubNub. Stream Controller kontroluje přístupová práva (PAM), aplikuje pravidla transformace (PubNub Functions), určuje cílové regiony a odesílá zprávu všem odběratelům. Pokud je odběratel odpojen, zpráva je ukládána do vyrovnávací paměti na 30 sekund (výchozí) v očekávání obnovení připojení.
Systém klíčů PubNub rozděluje přístupová práva na tři úrovně: publish klíč (pouze publikování), subscribe klíč (pouze odběr) a secret klíč (správa). Každá aplikace obdrží sadu tří klíčů při registraci, ale secret klíč není nikdy předáván klientovi — používá se pouze na straně serveru.
Publish klíč se používá pro odesílání zpráv do kanálů. Subscribe klíč — pro přihlášení k odběru kanálů a přijímání zpráv. Secret klíč — pro správu přístupu prostřednictvím PubNub Access Manager (PAM), vytváření dočasných tokenů publika a správu klíčů. Secret klíč je bezpečně uložen na serveru a nikdy není odhalen klientům.
PubNub podporuje několik režimů autentizace: podle IP adresy (pro servery), podle tajného klíče (pro administrativní operace), podle dočasných tokenů (pro klienty). Dočasné tokeny jsou vydávány prostřednictvím PAM s omezením času, kanálů a oprávnění (read, write, manage).
Kanály PubNub — pojmenované cesty pro zprávy. Název kanálu je řetězec o délce až 92 znaků, podporující latinská písmena, číslice, pomlčky a podtržítka. Kanály jsou vytvářeny dynamicky při prvním publikování nebo přihlášení k odběru. PubNub podporuje vzory kanálů prostřednictvím symbolu * v požadavku subscribe — to umožňuje přihlášení k odběru skupiny kanálů (např. user-*).
Channel Groups — mechanismus seskupování kanálů pro hromadný odběr. Místo přihlášení k odběru 50 samostatných kanálů se klient přihlásí k odběru jedné skupiny a všechny zprávy z kanálů v ní obsažených jsou automaticky doručovány klientovi. Channel Groups podporují vnořování, ale hloubka by neměla přesáhnout 3 úrovně.
Podle technické dokumentace PubNub (2025) je maximální počet odběratelů na jeden kanál 50 000. Pro vyšší zatížení se doporučuje používat kanály s předponami a rozdělovat publikum (např. chat-room-001, chat-room-002). Channel Groups lze také organizovat podle geografického nebo tematického principu.
| Parametr | Maximum | Poznámka |
|---|---|---|
| Délka názvu kanálu | 92 znaků | Latinka, číslice, -, _ |
| Odběratelů na kanál | 50 000 | Více — rozdělit |
| Channel Groups | 2000 skupin / klíč | Až 500 kanálů ve skupině |
| Historie (storage) | Bez omezení | Platba za objem úložiště |
Integrace PubNub vyžaduje registraci, vytvoření aplikace v administračním panelu a získání sady klíčů. Knihovny PubNub jsou k dispozici pro JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go a mnoho dalších jazyků. Podívejme se na příklad v JavaScriptu pro prohlížeč a Node.js.
Podle dokumentace PubNub (2025) knihovna pubnub-js podporuje import CommonJS i ES Module. Pro prohlížeč se doporučuje instalace přes npm a následné sestavení přes webpack nebo 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('Nová zpráva:', event.message);
},
presence: (event) => {
console.log('Přítomnost:', 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('Chyba při načítání historie', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions — serverless platforma pro zpracování zpráv na straně PubNub. Funkce se píší v JavaScriptu a spouštějí se v bezpečném izolovaném prostředí (V8 isolate). Mohou transformovat, filtrovat, ukládat do vyrovnávací paměti a přesměrovávat zprávy před doručením odběratelům.
Stream Controller — vestavěný mechanismus směrování, který spravuje tok zpráv na základě pravidel. Pravidla určují, které zprávy jsou doručeny, které jsou zahozeny a které jsou směrovány do PubNub Functions ke zpracování. Stream Controller podporuje podmíněné směrování podle obsahu zprávy, typu kanálu nebo metadat.
Podle blogu PubNub (2024) PubNub Functions snižují náklady na serverovou infrastrukturu pro zpracování zpráv o 40–60% díky tomu, že logika filtrování a transformace se provádí na okrajových uzlech PubNub, nikoli na vlastním serveru. Funkce mají přístup k HTTP požadavkům, Key-Value úložišti a dalším funkcím ve stejném prostoru.
PubNub SDK pro mobilní platformy jsou k dispozici pro iOS (Swift), Android (Kotlin/Java), Flutter (Dart) a React Native (JavaScript). Mobilní SDK podporují plnou sadu funkcí: pub/sub, přítomnost, historii, PAM a PubNub Functions. Pro push oznámení se PubNub integruje s APNs a FCM prostřednictvím speciálního mechanismu mobile push gateway.
Optimalizace pro mobilní zařízení zahrnuje adaptivní heartbeat, dávkové zpracování zpráv a podporu režimů na pozadí. PubNub SDK pro iOS používá Background Task API pro udržení připojení při minimalizované aplikaci (až 30 sekund standardního času na pozadí). Pro delší práci na pozadí je vyžadováno použití push oznámení.
Mobile Push Gateway — mechanismus odesílání push oznámení prostřednictvím PubNub. Když je zpráva publikována do kanálu, PubNub automaticky určí, kteří odběratelé jsou offline, a pošle jim push oznámení prostřednictvím APNs (iOS) nebo FCM (Android). Konfigurace se provádí jednou v administračním panelu — poté jsou všechny zprávy z kanálu automaticky duplikovány do push kanálu. Podle dokumentace PubNub (2025) gateway zpracovává až 10 000 push oznámení za sekundu.
Často kladené otázky
PubNub nabízí více SDK (75+ platforem), vestavěné serverless funkce a Stream Controller pro zpracování zpráv. Pusher se snadněji nastavuje, ale PubNub poskytuje větší kontrolu nad směrováním a transformací dat.
PubNub používá mechanismus at-least-once s automatickým opakováním při chybách. Každá zpráva má jedinečný timetoken pro deduplikaci. Zprávy jsou ukládány do vyrovnávací paměti po dobu 30 sekund pro offline odběratele.
Bezplatný plán zahrnuje 100 současných připojení a 1 milion zpráv měsíčně. Placené plány začínají od $49/měsíc za 1000 současných připojení s neomezeným počtem zpráv.
Ano, PubNub podporuje TLS 1.3 pro všechna připojení a volitelné end-to-end šifrování na straně klienta (AES-256) se správou klíčů prostřednictvím PAM. Pro enterprise klienty je k dispozici režim Cipher Key.
PubNub poskytuje SDK pro 75+ platforem, včetně JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust a Objective-C. To je největší ekosystém mezi službami v reálném čase.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také