PubNub — глобална мрежа за real-time размену порука, која пружа инфраструктуру за објављивање и претплату на поруке путем WebSocket-а са минималним кашњењем. Намењена је апликацијама које захтевају поуздану испоруку података при великом оптерећењу и нестабилној вези. Према званичној документацији PubNub (2025), платформа месечно обрађује преко 1 билион порука за 70 000+ апликација широм света.
Главне карактеристике
PubNub — глобална мрежа за пренос података у реалном времену, основана 2010. године. Пружа API за објављивање и претплату на поруке, као и додатне услуге: чување историје, управљање присуством, serverless функције (PubNub Functions) и аналитику токова података.
Архитектура PubNub-а се заснива на дистрибуираној мрежи тачака присуства (POP) смештених у 15+ географских региона. Свака тачка садржи кеширајуће брокере који усмеравају поруке између издавача и претплатника са минималним кашњењем. PubNub не користи јединственог централног брокера — сваки регион ради независно и синхронизује се преко глобалне мреже.
Према званичном сајту PubNub (2025), платформа опслужује преко 70 000 апликација у 200+ земаља. Међу кључним клијентима су Logitech (управљање IoT уређајима), GoPro (емитовање видеа у реалном времену), eBay (синхронизација аукција) и Snapchat (ћаскање и обавештења).
PubNub је изграђен на три принципа: брзина (кашњење мање од 10 ms у 95. перцентилу у оквиру једног региона), поузданост (гаранција испоруке at-least-once са аутоматским понављањем) и скалабилност (хоризонтално проширење без ограничења броја канала). Платформа не чува поруке у дуготрајном складишту — историја је доступна путем засебно прикључљивог сервиса Storage & Playback.
Модел рада PubNub-а се заснива на класичном publish-subscribe обрасцу. Клијент издавача шаље поруку са навођењем канала путем PubNub REST API-ја са publish кључем. PubNub доставља поруку свим претплатницима овог канала путем њихових активних WebSocket веза. Претплатници примају поруку путем callback-обрађивача регистрованог у PubNub SDK-у.
Транспортни слој PubNub-а користи WebSocket као главни протокол, са fallback-ом на HTTP long-polling за окружења са ограничењима. SDK аутоматски управља везом: успоставља, одржава heartbeat (сваких 15–60 секунди у зависности од мреже) и поново се повезује при прекиду.
Свака порука у PubNub-у садржи метаподатке: UUID пошиљаоца, временску ознаку, редни број (timetoken) и заставице (store, replicate, eatAfterRead). Timetoken — јединствени идентификатор PubNub-а заснован на времену, који гарантује глобални редослед порука у каналу. Према документацији PubNub (2025), timetoken има резолуцију од 10 наносекунди.
Када клијент објави поруку, она пролази кроз Stream Controller — модул за усмеравање PubNub-а. Stream Controller проверава права приступа (PAM), примењује правила трансформације (PubNub Functions), одређује циљне регионе и шаље поруку свим претплатницима. Ако је претплатник искључен, порука се баферује 30 секунди (подразумевано) у очекивању поновног успостављања везе.
Систем кључева PubNub-а дели права приступа на три нивоа: publish кључ (само објављивање), subscribe кључ (само претплата) и secret кључ (администрација). Свака апликација добија сет од три кључа при регистрацији, али secret кључ се никада не преноси клијенту — користи се само на серверској страни.
Publish кључ се користи за слање порука у канале. Subscribe кључ — за претплату на канале и примање порука. Secret кључ — за управљање приступом путем PubNub Access Manager-а (PAM), креирање привремених токена публике и управљање кључевима. Secret кључ се чува безбедно на серверу и никада се не открива клијентима.
PubNub подржава више режима аутентификације: по IP адреси (за сервере), по тајном кључу (за административне операције), по привременим токенима (за клијенте). Привремени токени се издају путем PAM-а са ограниченим временом трајања, каналима и правима (read, write, manage).
Канали PubNub-а — именоване руте за поруке. Име канала је низ дужине до 92 карактера, који подржава латинична слова, бројеве, цртице и доње црте. Канали се креирају динамички при првом објављивању или претплати. PubNub подржава шаблоне канала путем симбола * у subscribe захтеву — ово омогућава претплату на групу канала (нпр. user-*).
Channel Groups — механизам груписања канала за масовну претплату. Уместо претплате на 50 појединачних канала, клијент се претплаћује на једну групу, и све поруке из канала који је чине аутоматски се достављају клијенту. Channel Groups подржавају угњеждавање, али дубина не сме да прелази 3 нивоа.
Према техничкој документацији PubNub (2025), максимални број претплатника на један канал је 50 000. За већа оптерећења препоручује се коришћење канала са префиксима и шардовање публике (нпр. chat-room-001, chat-room-002). Channel Groups се такође могу организовати по географском или тематском принципу.
| Параметар | Максимум | Напомена |
|---|---|---|
| Дужина имена канала | 92 карактера | Латиница, бројеви, -, _ |
| Претплатника по каналу | 50 000 | Више — шардовати |
| Channel Groups | 2000 група / кључ | До 500 канала у групи |
| Историја (storage) | Без ограничења | Плаћање по обиму складиштења |
Интеграција PubNub-а захтева регистрацију, креирање апликације у админ панелу и добијање сета кључева. Библиотеке PubNub-а су доступне за JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go и многе друге језике. Погледајмо пример у JavaScript-у за прегледач и Node.js.
Према документацији PubNub (2025), библиотека pubnub-js подржава и CommonJS и ES Module импорт. За прегледач се препоручује инсталација путем npm-а и накнадно паковање путем webpack-а или 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('Нова порука:', event.message);
},
presence: (event) => {
console.log('Присуство:', 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('Грешка при преузимању историје', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions — serverless платформа за обраду порука на страни PubNub-а. Функције се пишу у JavaScript-у и извршавају се у безбедном изолованом окружењу (V8 isolate). Оне могу трансформисати, филтрирати, баферовати и преусмеравати поруке пре него што буду достављене претплатницима.
Stream Controller — уграђени механизам усмеравања који управља током порука на основу правила. Правила одређују које поруке се достављају, које се одбацују, а које се усмеравају на PubNub Functions за обраду. Stream Controller подржава условно усмеравање према садржају поруке, типу канала или метаподацима.
Према блогу PubNub (2024), PubNub Functions смањују трошкове серверске инфраструктуре за обраду порука за 40–60% захваљујући томе што се логика филтрирања и трансформације извршава на ивичним чворовима PubNub-а, а не на сопственом серверу. Функције имају приступ HTTP захтевима, Key-Value складишту и другим функцијама у истом простору.
PubNub SDK за мобилне платформе су доступни за iOS (Swift), Android (Kotlin/Java), Flutter (Dart) и React Native (JavaScript). Мобилни SDK-ови подржавају пун сет функција: pub/sub, присуство, историју, PAM и PubNub Functions. За push обавештења PubNub се интегрише са APNs и FCM путем посебног механизма mobile push gateway.
Оптимизација за мобилне уређаје укључује адаптивни heartbeat, групну обраду порука и подршку за позадинске режиме. PubNub SDK за iOS користи Background Task API за одржавање везе када је апликација минимизирана (до 30 секунди стандардног позадинског времена). За дужи позадински рад потребно је користити push обавештења.
Mobile Push Gateway — механизам слања push обавештења путем PubNub-а. Када се порука објави у каналу, PubNub аутоматски одређује који претплатници су ван мреже и шаље им push обавештење путем APNs (iOS) или FCM (Android). Подешавање се врши једном у админ панелу — након тога све поруке из канала се аутоматски дуплирају у push канал. Према документацији PubNub (2025), gateway обрађује до 10 000 push обавештења у секунди.
Често постављана питања
PubNub нуди више SDK-ова (75+ платформи), уграђене serverless функције и Stream Controller за обраду порука. Pusher је једноставнији за подешавање, али PubNub пружа већу контролу над усмеравањем и трансформацијом података.
PubNub користи at-least-once механизам са аутоматским понављањем приликом грешака. Свака порука има јединствени timetoken за дедупликацију. Поруке се баферују 30 секунди за ванмрежне претплатнике.
Бесплатни план укључује 100 истовремених веза и 1 милион порука месечно. Плаћени планови почињу од $49/месец за 1000 истовремених веза са неограниченим бројем порука.
Да, PubNub подржава TLS 1.3 за све везе и опционо end-to-end шифровање на клијенту (AES-256) са управљањем кључевима путем PAM-а. За enterprise клијенте доступан је Cipher Key режим.
PubNub обезбеђује SDK за 75+ платформи, укључујући JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust и Objective-C. Ово је највећи екосистем међу real-time сервисима.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође