PubNub — что это, real-time SDK и как работает в приложениях

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

PubNub — глобальная сеть для real-time messaging, предоставляющая инфраструктуру для публикации и подписки на сообщения через WebSocket с минимальной задержкой. Она ориентирована на приложения, требующие надёжной доставки данных при высокой нагрузке и нестабильном соединении. По данным официальной документации PubNub (2025), платформа обрабатывает более 1 триллиона сообщений ежемесячно для 70 000+ приложений по всему миру.

Главное

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

Что такое PubNub?

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

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

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

Ключевые принципы PubNub

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

Как работает PubNub

Модель работы PubNub основана на классическом паблиш-сабскрайб паттерне. Клиент издателя отправляет сообщение с указанием канала через PubNub REST API с publish-ключом. PubNub доставляет сообщение всем подписчикам этого канала через их активные WebSocket-соединения. Подписчики получают сообщение через callback-обработчик, зарегистрированный в PubNub SDK.

Транспортный слой PubNub использует WebSocket как основной протокол, с fallback на HTTP long-polling для сред с ограничениями. SDK автоматически управляет соединением: устанавливает, поддерживает heartbeat (каждые 15–60 секунд в зависимости от сети) и переподключается при обрыве.

Каждое сообщение в PubNub содержит метаданные: UUID отправителя, timestamp, порядковый номер (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('New message:', event.message);
    },
    presence: (event) => {
        console.log('Presence:', 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('Error fetching history', status);
            return;
        }
        const messages = response.channels['chat-general'];
        messages.forEach((msg) => {
            console.log(msg.message, msg.timetoken);
        });
    }
);

PubNub Functions и Stream Controller

PubNub Functions — serverless-платформа для обработки сообщений на стороне PubNub. Функции пишутся на JavaScript и выполняются в безопасном изолированном окружении (V8 isolate). Они могут трансформировать, фильтровать, буферизировать и перенаправлять сообщения до того, как они будут доставлены подписчикам.

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

По данным блога 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, пакетную обработку сообщений и поддержку background modes. 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+ платформ), встроенные serverless функции и 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. Это крупнейшая экосистема среди real-time сервисов.

Итоги

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

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

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также