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-сервисом браузера.
Основные компоненты
- Веб-приложение (клиент) — веб-страница или прогрессивное веб-приложение (PWA), которое регистрирует Service Worker и запрашивает разрешение на получение push-уведомлений.
- Service Worker — фоновый скрипт, работающий в браузере независимо от веб-страницы. Он отвечает за обработку входящих push-сообщений, даже если страница закрыта.
- Push-сервис — серверная инфраструктура браузера (например, Firebase Cloud Messaging для Chrome, Mozilla’s Push Service для Firefox), которая принимает сообщения от сервера приложений и доставляет их браузеру.
- Сервер приложений — серверная часть веб-сайта, которая отправляет push-сообщения через API.
Процесс доставки
- Регистрация подписки: Веб-приложение создаёт подписку на push-уведомления через вызов
PushManager.subscribe(). Этот метод генерирует уникальный объект подписки, содержащий endpoint (URL push-сервиса) и ключи шифрования. - Передача подписки серверу: Клиент отправляет объект подписки на сервер приложений, где он сохраняется для последующей отправки сообщений.
- Отправка сообщения: Сервер приложений отправляет HTTP-запрос (обычно POST) на endpoint подписки с зашифрованным payload (телом сообщения).
- Доставка через push-сервис: Push-сервис принимает сообщение, проверяет его валидность и доставляет браузеру пользователя.
- Обработка в 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 →