PubNub — ett globalt nätverk för meddelandehantering i realtid som tillhandahåller infrastruktur för publicering och prenumeration på meddelanden via WebSocket med minimal fördröjning. Det är avsett för applikationer som kräver tillförlitlig dataleverans under hög belastning och instabil anslutning. Enligt officiell PubNub-dokumentation (2025) behandlar plattformen över 1 biljon meddelanden varje månad för 70 000+ applikationer världen över.
Huvudpunkter
PubNub — ett globalt nätverk för dataöverföring i realtid, grundat 2010. Det tillhandahåller API för publicering och prenumeration på meddelanden, samt ytterligare tjänster: lagring av historik, hantering av närvaro, serverlösa funktioner (PubNub Functions) och analys av dataströmmar.
PubNubs arkitektur är baserad på ett distribuerat nätverk av närvaropunkter (POP) belägna i 15+ geografiska regioner. Varje punkt innehåller cachningsmäklare som dirigerar meddelanden mellan utgivare och prenumeranter med minimal fördröjning. PubNub använder inte en enda central mäklare — varje region fungerar oberoende och synkroniseras via det globala nätverket.
Enligt PubNubs officiella webbplats (2025) betjänar plattformen över 70 000 applikationer i 200+ länder. Bland nyckelkunderna finns Logitech (hantering av IoT-enheter), GoPro (videoströmning i realtid), eBay (synkronisering av auktioner) och Snapchat (chatt och aviseringar).
PubNub är byggd på tre principer: hastighet (fördröjning mindre än 10 ms i 95:e percentilen inom en region), tillförlitlighet (garanti för leverans at-least-once med automatisk återförsök) och skalbarhet (horisontell expansion utan begränsning av antalet kanaler). Plattformen lagrar inte meddelanden i långtidslagring — historik är tillgänglig via den separat anslutna Storage & Playback-tjänsten.
PubNubs arbetsmodell är baserad på det klassiska publish-subscribe-mönstret. Utgivarklienten skickar ett meddelande med angivelse av kanal via PubNub REST API med publish-nyckeln. PubNub levererar meddelandet till alla prenumeranter på denna kanal via deras aktiva WebSocket-anslutningar. Prenumeranterna tar emot meddelandet via en callback-hanterare registrerad i PubNub SDK.
Transportskiktet PubNub använder WebSocket som huvudprotokoll, med reserv till HTTP long-polling för miljöer med begränsningar. SDK hanterar automatiskt anslutningen: upprättar, upprätthåller heartbeat (var 15–60:e sekund beroende på nätverk) och återansluter vid avbrott.
Varje meddelande i PubNub innehåller metadata: avsändarens UUID, tidsstämpel, ordningsnummer (timetoken) och flaggor (store, replicate, eatAfterRead). Timetoken — en unik, tidsbaserad PubNub-identifierare som garanterar global ordning av meddelanden i kanalen. Enligt PubNub-dokumentationen (2025) har timetoken en upplösning på 10 nanosekunder.
När en klient publicerar ett meddelande går det genom Stream Controller — PubNubs routingmodul. Stream Controller kontrollerar åtkomsträttigheter (PAM), tillämpar transformeringsregler (PubNub Functions), bestämmer målregioner och skickar meddelandet till alla prenumeranter. Om en prenumerant är frånkopplad buffras meddelandet i 30 sekunder (standard) i väntan på återställning av anslutningen.
PubNubs nyckelsystem delar upp åtkomsträttigheterna i tre nivåer: publish-nyckel (endast publicering), subscribe-nyckel (endast prenumeration) och secret-nyckel (administration). Varje applikation får en uppsättning av tre nycklar vid registrering, men secret-nyckeln skickas aldrig till klienten — den används endast på serversidan.
Publish-nyckeln används för att skicka meddelanden till kanaler. Subscribe-nyckeln — för att prenumerera på kanaler och ta emot meddelanden. Secret-nyckeln — för att hantera åtkomst via PubNub Access Manager (PAM), skapa tillfälliga målgruppstoken och hantera nycklar. Secret-nyckeln lagras säkert på servern och avslöjas aldrig för klienter.
PubNub stöder flera autentiseringslägen: efter IP-adress (för servrar), efter hemlig nyckel (för administrativa operationer), efter tillfälliga token (för klienter). Tillfälliga token utfärdas via PAM med begränsning av tid, kanaler och rättigheter (read, write, manage).
PubNub-kanaler — namngivna vägar för meddelanden. Kanalnamnet är en sträng på upp till 92 tecken som stöder latinska bokstäver, siffror, bindestreck och understreck. Kanaler skapas dynamiskt vid första publicering eller prenumeration. PubNub stöder kanalmönster via symbolen * i subscribe-förfrågan — detta möjliggör prenumeration på en grupp kanaler (t.ex. user-*).
Channel Groups — en mekanism för att gruppera kanaler för massprenumeration. Istället för att prenumerera på 50 separata kanaler prenumererar klienten på en grupp, och alla meddelanden från kanalerna i gruppen levereras automatiskt till klienten. Channel Groups stöder nästling, men djupet bör inte överstiga 3 nivåer.
Enligt PubNubs tekniska dokumentation (2025) är det maximala antalet prenumeranter per kanal 50 000. För högre belastning rekommenderas användning av kanaler med prefix och shardning av målgruppen (t.ex. chat-room-001, chat-room-002). Channel Groups kan också organiseras enligt geografisk eller tematisk princip.
| Parameter | Maximum | Anmärkning |
|---|---|---|
| Längd på kanalnamn | 92 tecken | Latinska bokstäver, siffror, -, _ |
| Prenumeranter per kanal | 50 000 | Mer — sharda |
| Channel Groups | 2000 grupper / nyckel | Upp till 500 kanaler per grupp |
| Historik (storage) | Obegränsat | Betalning per lagringsvolym |
PubNub-integration kräver registrering, skapande av en applikation i adminpanelen och hämtning av en uppsättning nycklar. PubNub-bibliotek finns tillgängliga för JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go och många andra språk. Låt oss titta på ett exempel i JavaScript för webbläsare och Node.js.
Enligt PubNub-dokumentationen (2025) stöder pubnub-js-biblioteket både CommonJS och ES Module-import. För webbläsare rekommenderas installation via npm följt av bundling via webpack eller 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('Nytt meddelande:', event.message);
},
presence: (event) => {
console.log('Närvaro:', 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('Fel vid hämtning av historik', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions — serverlös plattform för att bearbeta meddelanden på PubNub-sidan. Funktioner skrivs i JavaScript och utförs i en säker isolerad miljö (V8 isolate). De kan transformera, filtrera, buffra och omdirigera meddelanden innan de levereras till prenumeranter.
Stream Controller — inbyggd routingsmekanism som hanterar meddelandeströmmen baserat på regler. Reglerna bestämmer vilka meddelanden som levereras, vilka som kasseras och vilka som dirigeras till PubNub Functions för bearbetning. Stream Controller stöder villkorlig routing baserat på meddelandeinnehåll, kanaltyp eller metadata.
Enligt PubNub-bloggen (2024) minskar PubNub Functions serverinfrastrukturkostnaderna för meddelandebearbetning med 40–60% tack vare att filtrerings- och transformeringslogiken utförs på PubNubs kantnoder, inte på den egna servern. Funktioner har tillgång till HTTP-förfrågningar, Key-Value-lagring och andra funktioner i samma utrymme.
PubNub SDK för mobila plattformar finns tillgängliga för iOS (Swift), Android (Kotlin/Java), Flutter (Dart) och React Native (JavaScript). Mobila SDK:er stöder den fulla funktionsuppsättningen: pub/sub, närvaro, historik, PAM och PubNub Functions. För push-meddelanden integrerar PubNub med APNs och FCM via en särskild mobil push-gateway-mekanism.
Optimering för mobila enheter inkluderar adaptiv heartbeat, batchbearbetning av meddelanden och stöd för bakgrundslägen. PubNub SDK för iOS använder Background Task API för att upprätthålla anslutningen när appen är minimerad (upp till 30 sekunders standardbakgrundstid). För längre bakgrundsarbete krävs användning av push-meddelanden.
Mobile Push Gateway — en mekanism för att skicka push-meddelanden via PubNub. När ett meddelande publiceras i en kanal bestämmer PubNub automatiskt vilka prenumeranter som är offline och skickar ett push-meddelande till dem via APNs (iOS) eller FCM (Android). Konfiguration görs en gång i adminpanelen — därefter dupliceras alla meddelanden från kanalen automatiskt till push-kanalen. Enligt PubNub-dokumentationen (2025) bearbetar gatewayen upp till 10 000 push-meddelanden per sekund.
Vanliga frågor
PubNub erbjuder fler SDK:er (75+ plattformar), inbyggda serverlösa funktioner och Stream Controller för meddelandebearbetning. Pusher är enklare att konfigurera, men PubNub ger mer kontroll över routing och datatransformering.
PubNub använder at-least-once-mekanismen med automatisk återförsök vid fel. Varje meddelande har en unik timetoken för deduplicering. Meddelanden buffras i 30 sekunder för offline-prenumeranter.
Den kostnadsfria planen omfattar 100 samtidiga anslutningar och 1 miljon meddelanden per månad. Betalda planer börjar från $49/månad för 1000 samtidiga anslutningar med obegränsat antal meddelanden.
Ja, PubNub stöder TLS 1.3 för alla anslutningar och valfri end-to-end-kryptering på klientsidan (AES-256) med nyckelhantering via PAM. För företagskunder finns Cipher Key-läget tillgängligt.
PubNub tillhandahåller SDK för 75+ plattformar, inklusive JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust och Objective-C. Detta är det största ekosystemet bland realtidstjänster.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också