PubNub — globalna sieć do przesyłania wiadomości w czasie rzeczywistym, zapewniająca infrastrukturę do publikowania i subskrybowania wiadomości przez WebSocket z minimalnym opóźnieniem. Jest przeznaczona dla aplikacji wymagających niezawodnego dostarczania danych przy wysokim obciążeniu i niestabilnym połączeniu. Według danych oficjalnej dokumentacji PubNub (2025), platforma przetwarza ponad 1 bilion wiadomości miesięcznie dla 70 000+ aplikacji na całym świecie.
Najważniejsze
PubNub — globalna sieć przesyłania danych w czasie rzeczywistym, założona w 2010 roku. Zapewnia API do publikowania i subskrybowania wiadomości oraz dodatkowe usługi: przechowywanie historii, zarządzanie obecnością, funkcje serverless (PubNub Functions) i analitykę strumieni danych.
Architektura PubNub opiera się na rozproszonej sieci punktów obecności (POP) zlokalizowanych w 15+ regionach geograficznych. Każdy punkt zawiera buforujące brokerki, które kierują wiadomości między wydawcami a subskrybentami z minimalnym opóźnieniem. PubNub nie używa pojedynczego centralnego brokera — każdy region działa niezależnie i synchronizuje się przez globalną sieć.
Według danych oficjalnej strony PubNub (2025), platforma obsługuje ponad 70 000 aplikacji w 200+ krajach. Wśród kluczowych klientów są Logitech (zarządzanie urządzeniami IoT), GoPro (transmisja wideo w czasie rzeczywistym), eBay (synchronizacja aukcji) i Snapchat (czat i powiadomienia).
PubNub jest zbudowana na trzech zasadach: szybkość (opóźnienie poniżej 10 ms w 95. percentylu w obrębie jednego regionu), niezawodność (gwarancja dostarczenia at-least-once z automatycznym ponawianiem) i skalowalność (horyzontalne rozszerzanie bez ograniczeń liczby kanałów). Platforma nie przechowuje wiadomości w długotrwałym magazynie — historia jest dostępna przez osobno podłączaną usługę Storage & Playback.
Model działania PubNub opiera się na klasycznym wzorcu publish-subscribe. Klient wydawcy wysyła wiadomość z określeniem kanału przez PubNub REST API z kluczem publish. PubNub dostarcza wiadomość wszystkim subskrybentom tego kanału przez ich aktywne połączenia WebSocket. Subskrybenci otrzymują wiadomość przez callback, zarejestrowany w PubNub SDK.
Warstwa transportowa PubNub używa WebSocket jako głównego protokołu, z fallbackiem na HTTP long-polling w środowiskach z ograniczeniami. SDK automatycznie zarządza połączeniem: ustanawia, utrzymuje heartbeat (co 15–60 sekund w zależności od sieci) i ponownie łączy się po przerwaniu.
Każda wiadomość w PubNub zawiera metadane: UUID nadawcy, znacznik czasu, numer sekwencyjny (timetoken) i flagi (store, replicate, eatAfterRead). Timetoken — unikalny identyfikator PubNub oparty na czasie, który gwarantuje globalną kolejność wiadomości w kanale. Według danych dokumentacji PubNub (2025), timetoken ma rozdzielczość 10 nanosekund.
Kiedy klient publikuje wiadomość, przechodzi ona przez Stream Controller — moduł routingu PubNub. Stream Controller sprawdza uprawnienia dostępu (PAM), stosuje reguły transformacji (PubNub Functions), określa docelowe regiony i wysyła wiadomość do wszystkich subskrybentów. Jeśli subskrybent jest odłączony, wiadomość jest buforowana przez 30 sekund (domyślnie) w oczekiwaniu na przywrócenie połączenia.
System kluczy PubNub dzieli uprawnienia dostępu na trzy poziomy: klucz publish (tylko publikowanie), klucz subscribe (tylko subskrypcja) i klucz secret (administracja). Każda aplikacja otrzymuje zestaw trzech kluczy podczas rejestracji, ale klucz secret nigdy nie jest przekazywany do klienta — jest używany tylko po stronie serwera.
Klucz publish służy do wysyłania wiadomości do kanałów. Klucz subscribe — do subskrybowania kanałów i odbierania wiadomości. Klucz secret — do zarządzania dostępem przez PubNub Access Manager (PAM), tworzenia tymczasowych tokenów odbiorców i zarządzania kluczami. Klucz secret jest bezpiecznie przechowywany na serwerze i nigdy nie jest ujawniany klientom.
PubNub obsługuje wiele trybów uwierzytelniania: według adresu IP (dla serwerów), według klucza tajnego (dla operacji administracyjnych), według tymczasowych tokenów (dla klientów). Tymczasowe tokeny są wydawane przez PAM z ograniczeniem czasu działania, kanałów i uprawnień (read, write, manage).
Kanały PubNub — nazwane trasy dla wiadomości. Nazwa kanału to ciąg znaków o długości do 92 znaków, obsługujący litery łacińskie, cyfry, myślniki i podkreślenia. Kanały są tworzone dynamicznie przy pierwszej publikacji lub subskrypcji. PubNub obsługuje wzorce kanałów przez symbol * w zapytaniu subscribe — umożliwia to subskrypcję grupy kanałów (np. user-*).
Channel Groups — mechanizm grupowania kanałów do masowej subskrypcji. Zamiast subskrybować 50 oddzielnych kanałów, klient subskrybuje jedną grupę, a wszystkie wiadomości z kanałów wchodzących w jej skład są automatycznie dostarczane klientowi. Channel Groups obsługują zagnieżdżanie, ale głębokość nie powinna przekraczać 3 poziomów.
Według danych dokumentacji technicznej PubNub (2025), maksymalna liczba subskrybentów na jeden kanał to 50 000. Dla wyższych obciążeń zaleca się używanie kanałów z prefiksami i shardowanie odbiorców (np. chat-room-001, chat-room-002). Channel Groups mogą być również organizowane według zasady geograficznej lub tematycznej.
| Parametr | Maksimum | Uwagi |
|---|---|---|
| Długość nazwy kanału | 92 znaki | Litery łacińskie, cyfry, -, _ |
| Subskrybentów na kanał | 50 000 | Powyżej — shardować |
| Channel Groups | 2000 grup / klucz | Do 500 kanałów w grupie |
| Historia (storage) | Bez limitu | Płatność za objętość przechowywania |
Integracja PubNub wymaga rejestracji, utworzenia aplikacji w panelu administracyjnym i uzyskania zestawu kluczy. Biblioteki PubNub są dostępne dla JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go i wielu innych języków. Rozważmy przykład w JavaScript dla przeglądarki i Node.js.
Według danych dokumentacji PubNub (2025), biblioteka pubnub-js obsługuje zarówno CommonJS, jak i import ES Module. Dla przeglądarki zaleca się użycie kompilacji przez npm z późniejszym bundle'owaniem przez webpack lub 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('Nowa wiadomość:', event.message);
},
presence: (event) => {
console.log('Obecność:', 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('Błąd pobierania historii', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions — platforma serverless do przetwarzania wiadomości po stronie PubNub. Funkcje są pisane w JavaScript i wykonywane w bezpiecznym izolowanym środowisku (V8 isolate). Mogą transformować, filtrować, buforować i przekierowywać wiadomości zanim zostaną dostarczone subskrybentom.
Stream Controller — wbudowany mechanizm routingu, który zarządza strumieniem wiadomości na podstawie reguł. Reguły określają, które wiadomości są dostarczane, które odrzucane, a które kierowane do PubNub Functions w celu przetworzenia. Stream Controller obsługuje conditional routing według zawartości wiadomości, typu kanału lub metadanych.
Według danych bloga PubNub (2024), PubNub Functions zmniejszają koszty infrastruktury serwerowej do przetwarzania wiadomości o 40–60% dzięki temu, że logika filtrowania i transformacji jest wykonywana na węzłach brzegowych PubNub, a nie na własnym serwerze. Funkcje mają dostęp do żądań HTTP, magazynu Key-Value i innych funkcji w tej samej przestrzeni.
PubNub SDK dla platform mobilnych są dostępne dla iOS (Swift), Android (Kotlin/Java), Flutter (Dart) i React Native (JavaScript). Mobilne SDK obsługują pełen zestaw funkcji: pub/sub, obecność, historię, PAM i PubNub Functions. Dla powiadomień push PubNub integruje się z APNs i FCM przez specjalny mechanizm mobile push gateway.
Optymalizacja dla urządzeń mobilnych obejmuje adaptacyjny heartbeat, przetwarzanie wsadowe wiadomości i obsługę trybów tła. PubNub SDK dla iOS używa Background Task API do utrzymywania połączenia przy zminimalizowanej aplikacji (do 30 sekund standardowego czasu tła). Dłuższa praca w tle wymaga użycia powiadomień push.
Mobile Push Gateway — mechanizm wysyłania powiadomień push przez PubNub. Gdy wiadomość jest publikowana w kanale, PubNub automatycznie określa, którzy subskrybenci są offline, i wysyła im powiadomienie push przez APNs (iOS) lub FCM (Android). Konfiguracja jest wykonywana jednorazowo w panelu administracyjnym — po tym wszystkie wiadomości z kanału są automatycznie duplikowane do kanału push. Według danych dokumentacji PubNub (2025), gateway przetwarza do 10 000 powiadomień push na sekundę.
Często zadawane pytania
PubNub oferuje więcej SDK (75+ platform), wbudowane funkcje serverless i Stream Controller do przetwarzania wiadomości. Pusher jest prostszy w konfiguracji, ale PubNub daje większą kontrolę nad routingiem i transformacją danych.
PubNub używa mechanizmu at-least-once z automatycznym ponawianiem przy awariach. Każda wiadomość ma unikalny timetoken do deduplikacji. Wiadomości są buforowane przez 30 sekund dla subskrybentów offline.
Darmowy plan obejmuje 100 równoczesnych połączeń i 1 milion wiadomości miesięcznie. Plany płatne zaczynają się od $49/miesiąc za 1000 równoczesnych połączeń z nieograniczoną liczbą wiadomości.
Tak, PubNub obsługuje TLS 1.3 dla wszystkich połączeń i opcjonalne szyfrowanie end-to-end po stronie klienta (AES-256) z zarządzaniem kluczami przez PAM. Dla klientów enterprise dostępny jest tryb Cipher Key.
PubNub udostępnia SDK dla 75+ platform, w tym JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust i Objective-C. To największy ekosystem wśród usług czasu rzeczywistego.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również