PubNub — какво е, SDK за реално време и как работи в приложенията

Автор: IT Sectr Публикувано: 2026-06-02 Време за четене: 8 мин

PubNub — глобална мрежа за обмен на съобщения в реално време, предоставяща инфраструктура за публикуване и абониране за съобщения чрез WebSocket с минимално закъснение. Тя е насочена към приложения, изискващи надеждно доставяне на данни при високо натоварване и нестабилна връзка. Според официалната документация на PubNub (2025), платформата обработва над 1 трилион съобщения месечно за 70 000+ приложения по целия свят.

Основни точки

  • PubNub — глобална мрежа за съобщения в реално време с 15+ центрове за данни и гарантирана доставка.
  • Pub/Sub с ключове — публикуване и абониране чрез publish/subscribe ключове с разделяне на правата за достъп.
  • Stream Controller — управление на потока от съобщения с поддръжка на филтриране, трансформация и буфериране.
  • Presence — проследяване на онлайн статуса на участниците в канала с откриване чрез таймаут.
  • SDK за 75+ платформи — най-голямата екосистема от клиентски библиотеки сред услугите в реално време.

Какво е PubNub?

PubNub — глобална мрежа за предаване на данни в реално време, основана през 2010 г. Тя предоставя API за публикуване и абониране за съобщения, както и допълнителни услуги: съхранение на история, управление на присъствие, функции без сървър (PubNub Functions) и анализи на потоци от данни.

Архитектурата на PubNub се основава на разпределена мрежа от точки на присъствие (POP), разположени в 15+ географски региона. Всяка точка съдържа кеширащи брокери, които маршрутизират съобщения между издатели и абонати с минимално закъснение. PubNub не използва единен централен брокер — всеки регион работи независимо и се синхронизира чрез глобалната мрежа.

Според официалния уебсайт на PubNub (2025), платформата обслужва над 70 000 приложения в 200+ държави. Сред ключовите клиенти са Logitech (управление на IoT устройства), GoPro (предаване на видео в реално време), eBay (синхронизиране на търгове) и Snapchat (чат и известия).

Основни принципи на PubNub

PubNub е изградена на три принципа: скорост (закъснение под 10 ms в 95-ия персентил в рамките на един регион), надеждност (гаранция за доставка at-least-once с автоматично повторение) и мащабируемост (хоризонтално разширяване без ограничение на броя канали). Платформата не съхранява съобщения в дългосрочно хранилище — историята е достъпна чрез отделно свързваната услуга Storage & Playback.

Как работи PubNub

Моделът на работа на PubNub се основава на класическия модел publish-subscribe. Клиентът издател изпраща съобщение с посочване на канала чрез PubNub REST API с publish ключ. PubNub доставя съобщението на всички абонати на този канал чрез техните активни WebSocket връзки. Абонатите получават съобщението чрез callback манипулатор, регистриран в PubNub SDK.

Транспортният слой на PubNub използва WebSocket като основен протокол, с резервен вариант 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

Системата от ключове на PubNub разделя правата за достъп на три нива: publish ключ (само публикуване), subscribe ключ (само абониране) и secret ключ (администриране). Всяко приложение получава набор от три ключа при регистрация, но secret ключът никога не се предава на клиента — използва се само от страна на сървъра.

Publish ключът се използва за изпращане на съобщения до канали. Subscribe ключът — за абониране за канали и получаване на съобщения. Secret ключът — за управление на достъпа чрез PubNub Access Manager (PAM), създаване на временни токени за аудитория и управление на ключове. Secret ключът се съхранява сигурно на сървъра и никога не се разкрива на клиенти.

PubNub поддържа няколко режима на удостоверяване: по IP адрес (за сървъри), по таен ключ (за административни операции), по временни токени (за клиенти). Временните токени се издават чрез PAM с ограничение във времето, канали и права (read, write, manage).

Канали на PubNub

Канали на 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 Groups2000 групи / ключДо 500 канала в група
История (storage)Без ограничениеЗаплащане за обем на съхранение

Как да използваме PubNub в проект

Интеграция на 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.

Абониране за канал

js
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' }
});

Получаване на история на съобщенията

js
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 и Stream Controller

PubNub Functions — платформа без сървър за обработка на съобщения от страна на PubNub. Функциите се пишат на JavaScript и се изпълняват в защитена изолирана среда (V8 isolate). Те могат да трансформират, филтрират, буферират и пренасочват съобщения, преди да бъдат доставени на абонатите.

Stream Controller — вграден механизъм за маршрутизация, който управлява потока от съобщения въз основа на правила. Правилата определят кои съобщения се доставят, кои се отхвърлят и кои се насочват към PubNub Functions за обработка. Stream Controller поддържа условна маршрутизация според съдържанието на съобщението, типа на канала или метаданни.

Според блога на PubNub (2024), PubNub Functions намаляват разходите за сървърна инфраструктура за обработка на съобщения с 40–60% благодарение на факта, че логиката за филтриране и трансформация се изпълнява на крайните възли на PubNub, а не на собствения сървър. Функциите имат достъп до HTTP заявки, Key-Value хранилище и други функции в същото пространство.

PubNub в мобилни приложения

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 се различава от Pusher?

PubNub предлага повече SDK (75+ платформи), вградени функции без сървър и Stream Controller за обработка на съобщения. Pusher е по-лесен за настройка, но PubNub дава повече контрол върху маршрутизацията и трансформацията на данни.

Как PubNub гарантира доставката на съобщения?

PubNub използва механизъм at-least-once с автоматично повторение при грешки. Всяко съобщение има уникален timetoken за дедупликация. Съобщенията се буферират за 30 секунди за офлайн абонати.

Колко струва PubNub?

Безплатният план включва 100 едновременни връзки и 1 милион съобщения на месец. Платените планове започват от $49/месец за 1000 едновременни връзки с неограничен брой съобщения.

Поддържа ли PubNub криптиране?

Да, PubNub поддържа TLS 1.3 за всички връзки и опционално end-to-end криптиране от страна на клиента (AES-256) с управление на ключове чрез PAM. За enterprise клиенти е наличен режим Cipher Key.

Какви езици поддържа PubNub SDK?

PubNub предоставя SDK за 75+ платформи, включително JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust и Objective-C. Това е най-голямата екосистема сред услугите в реално време.

Обобщение

  • PubNub — глобална мрежа за обмен на съобщения в реално време с 15+ центрове за данни и поддръжка на 75+ платформи.
  • Системата от ключове publish/subscribe/secret + PAM осигурява гъвкаво управление на правата за достъп.
  • PubNub Functions позволяват обработка на съобщения без сървър без собствена сървърна инфраструктура.
  • Stream Controller управлява маршрутизацията, филтрирането и трансформацията на съобщения на крайните възли на мрежата.
  • Mobile Push Gateway автоматично изпраща push известия чрез APNs и FCM за офлайн абонати.
  • Каналите поддържат до 50 000 абонати, а Channel Groups опростяват управлението на множество канали.
  • За проекти с широка платформена поддръжка и вградена обработка на съобщения изберете PubNub; за по-прости сценарии е достатъчен Pusher.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също