Открыть сервис

Push API

Push API — это программный интерфейс (API) веб-браузера, предоставляемый платформой W3C (World Wide Web Consortium), который позволяет серверному приложению отправлять веб-клиенту (браузеру) push-уведомления в любое время, даже когда веб-страница не открыта в данный момент. Push API является частью общей технологии Service Workers и используется для доставки сообщений от сервера к клиенту в реальном времени, обеспечивая возможность взаимодействия с пользователем без активного открытия веб-сайта.

История и развитие

Концепция push-уведомлений в вебе возникла как ответ на ограничения традиционных HTTP-запросов, где сервер мог отправлять данные только в ответ на запрос клиента. Первые попытки реализации push-подобной функциональности (например, через long polling или Server-Sent Events) требовали постоянного открытого соединения или периодических опросов.

Разработка стандарта Push API началась в рамках W3C в начале 2010-х годов. Первые черновики спецификации были опубликованы в 2012 году. В 2015 году компания Google (организация зарегистрирована в США, не является запрещённой в РФ) внедрила поддержку Push API в браузере Chrome, что стало ключевым этапом в популяризации технологии. Впоследствии поддержка была добавлена в Firefox, Safari (с 2022 года) и другие браузеры.

В 2016 году спецификация Push API достигла статуса «Рекомендация W3C» (W3C Recommendation), что закрепило её как официальный веб-стандарт. С тех пор технология активно развивается, включая улучшения в области безопасности, шифрования и управления подписками.

Архитектура и принцип работы

Push API работает на основе асинхронной модели взаимодействия между тремя основными компонентами: веб-приложением (клиентом), сервером приложений и push-сервисом браузера.

Основные компоненты

  1. Веб-приложение (клиент) — веб-страница или прогрессивное веб-приложение (PWA), которое регистрирует Service Worker и запрашивает разрешение на получение push-уведомлений.
  2. Service Worker — фоновый скрипт, работающий в браузере независимо от веб-страницы. Он отвечает за обработку входящих push-сообщений, даже если страница закрыта.
  3. Push-сервиссерверная инфраструктура браузера (например, Firebase Cloud Messaging для Chrome, Mozilla’s Push Service для Firefox), которая принимает сообщения от сервера приложений и доставляет их браузеру.
  4. Сервер приложений — серверная часть веб-сайта, которая отправляет push-сообщения через API.

Процесс доставки

  1. Регистрация подписки: Веб-приложение создаёт подписку на push-уведомления через вызов PushManager.subscribe(). Этот метод генерирует уникальный объект подписки, содержащий endpoint (URL push-сервиса) и ключи шифрования.
  2. Передача подписки серверу: Клиент отправляет объект подписки на сервер приложений, где он сохраняется для последующей отправки сообщений.
  3. Отправка сообщения: Сервер приложений отправляет HTTP-запрос (обычно POST) на endpoint подписки с зашифрованным payload (телом сообщения).
  4. Доставка через push-сервис: Push-сервис принимает сообщение, проверяет его валидность и доставляет браузеру пользователя.
  5. Обработка в Service Worker: Браузер активирует Service Worker, который обрабатывает событие push и может отобразить уведомление или выполнить другие действия.

Шифрование и безопасность

Все push-сообщения шифруются с использованием протокола Web Push Encryption (RFC 8291). Это гарантирует, что даже push-сервис не может прочитать содержимое сообщения. Ключи шифрования генерируются на стороне клиента при создании подписки и передаются серверу приложений. Для аутентификации сервера используется подпись Voluntary Application Server Identification (VAPID), которая позволяет push-сервису проверять, что отправитель имеет право использовать данный endpoint.

Классификация и виды

Push API можно классифицировать по нескольким признакам:

По типу сообщений

  • Уведомления с payload — содержат данные (текст, заголовок, иконку), которые отображаются в виде системного уведомления.
  • Уведомления без payload — только сигнал для Service Worker, который может выполнить фоновую синхронизацию, обновление данных или другие действия без отображения уведомления.

По способу доставки

  • Одноадресные (unicast) — отправка конкретному пользователю.
  • Широковещательные (broadcast) — отправка всем подписчикам (реализуется на стороне сервера приложений, так как Push API не поддерживает нативную широковещательную рассылку).

По поддержке браузеров

  • Полная поддержка — Chrome, Firefox, Edge, Opera, Samsung Internet.
  • Ограниченная поддержка — Safari (с 2022 года, но с некоторыми ограничениями, например, требуется активная сессия).
  • Отсутствие поддержкиInternet Explorer (прекратил поддержку).

Применение и значение

Push API широко используется для повышения вовлечённости пользователей в веб-приложениях, особенно в прогрессивных веб-приложениях (PWA). Основные сценарии применения:

Уведомления о событиях

  • Социальные сети: уведомления о новых сообщениях, лайках, комментариях.
  • Электронная почта: оповещения о новых письмах.
  • Мессенджеры: доставка сообщений в реальном времени (например, Telegram Web).

Маркетинг и взаимодействие

  • Скидки и акции: уведомления о распродажах, новых товарах.
  • Напоминания: о брошенных корзинах, предстоящих событиях (вебинары, встречи).

Операционная информация

  • Обновления контента: новые статьи, видео, подкасты.
  • Статус заказов: доставка, готовность к выдаче.
  • Системные оповещения: изменения в настройках, угрозы безопасности.

Преимущества

  • Высокая доставляемость: уведомления приходят даже при закрытом браузере (на настольных платформах) или при свёрнутом приложении (на мобильных устройствах).
  • Энергоэффективность: push-сообщения используют минимальные ресурсы, так как не требуют постоянного соединения.
  • Кроссплатформенность: работают на всех современных браузерах и операционных системах.
  • Безопасность: шифрование и аутентификация предотвращают перехват и подделку сообщений.

Недостатки и ограничения

  • Зависимость от push-сервисов: браузеры используют собственные сервисы, что может создавать единую точку отказа.
  • Ограничения на мобильных устройствах: на iOS push-уведомления работают только при активной сессии браузера (ограничение Safari).
  • Требование разрешения пользователя: пользователь должен явно разрешить уведомления, что снижает охват.
  • Сложность реализации: требуется настройка Service Worker, шифрования и серверной инфраструктуры.

Примеры использования

Веб-приложения

  • Google Docs (организация зарегистрирована в США, не является запрещённой в РФ): уведомления о комментариях и изменениях в документах.
  • Trello (организация зарегистрирована в США, не является запрещённой в РФ): оповещения о новых задачах и изменениях на досках.
  • Slack (организация зарегистрирована в США, не является запрещённой в РФ): уведомления о сообщениях в каналах.

Российские сервисы

  • Яндекс.Почта: уведомления о новых письмах.
  • ВКонтакте: уведомления о сообщениях, лайках, комментариях (через веб-версию).
  • Сбербанк Онлайн: уведомления о транзакциях и изменениях в аккаунте.

Критика и проблемы

Конфиденциальность

Push API может использоваться для отслеживания поведения пользователей, так как сервер приложений получает информацию о том, когда пользователь получает уведомления. Однако стандарт VAPID позволяет ограничить эту информацию, а шифрование предотвращает чтение содержимого третьими сторонами.

Навязчивость

Чрезмерное использование push-уведомлений может раздражать пользователей, что приводит к отпискам или блокировке уведомлений на уровне браузера. Спецификация рекомендует ограничивать количество уведомлений и предоставлять пользователям контроль над их частотой.

Технические ограничения

  • Размер payload: максимальный размер тела сообщения ограничен 4 КБ (в некоторых реализациях — 2 КБ).
  • Срок жизни сообщения: push-сообщения могут быть отброшены, если пользователь не подключён к сети в течение определённого времени (обычно 28 дней).
  • Нет гарантии доставки: push-сервисы не гарантируют доставку всех сообщений, особенно при высокой нагрузке.

Источники

  • W3C Push API Specification (W3C Recommendation, 2016)
  • RFC 8291: Message Encryption for Web Push (IETF, 2017)
  • RFC 8292: Voluntary Application Server Identification (VAPID) for Web Push (IETF, 2017)
  • MDN Web Docs: Push API (Mozilla Developer Network)
  • Google Developers: Web Push Notifications (Google, 2015)
  • Статья «Web Push Notifications: A Comprehensive Guide» (Smashing Magazine, 2019)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →