Push API

Примечание: Эта возможность доступна в Web Workers.

Push API предоставляет веб-приложениям возможность принимать сообщения с сервера независимо от того, запущено веб-приложение прямо сейчас или нет. Что в свою очередь позволяет разработчикам оперативно уведомлять пользователей, которые разрешили присылать себе уведомления о новом контенте.

Об использовании Push API

Обратите внимание: При использовании PushManager-подписок жизненно важно защищать запросы от CSRF/XSRF-атак в вашем приложении. Подробнее читайте по ссылкам:

Для получения сообщений от сервера у приложения должен быть активированный сервис-воркер. После активации у сервис-воркера появится возможность подписаться на канал для получения сообщений, используя PushManager.subscribe().

В результате подписки будет получен объект PushSubscription со всей необходимой информацией, которая может потребоваться приложению для обращения за сообщениями на сервер: URL-адрес и ключ шифрования.

После подписки сервис-воркеру можно добавить обработчик ServiceWorkerGlobalScope.onpush для получения сообщений от сервера. В качестве реакции на сообщение можно, например, обращаться к серверу за данными и показывать пользователю уведомление с помощью метода ServiceWorkerRegistration.showNotification().

Для сервис-воркера каждая подписка уникальна, а её URL-адрес — уникальная специальная ссылка. Поскольку это всё, что нужно для обращения к серверу, данную ссылку нужно держать в секрете, иначе любое другое приложение сможет воспользоваться вашим сервером.

Для получения push-сообщений сервис-воркеру требуются ресурсы, что может влиять, например, на расход батареи. Во всех браузерах эти проблемы решаются по-разному, какого-то единого стандарта на этот счёт нет. Например, браузер Firefox ограничивает количество сообщений, которое можно отправить приложению, однако сообщения с показом уведомления в этот лимит не попадают. В Chrome таких ограничений нет.

Интерфейсы

PushEvent

Описывает действие, направленное в глобальную область видимости сервис-воркера. Включает информацию, переданную сервером подписчикам.

PushManager

Предоставляет возможность подписаться на сообщения от сторонних серверов и получить URL-адрес для отправки push-уведомлений.

PushMessageData

Содержит данные, отправленные сервером, и методы для управления ими.

PushSubscription

Предоставляет возможность получить URL-адрес подписки, а также содержит метод для отписки.

PushSubscriptionOptions

Описывает параметры конкретной подписки.

Методы сервис-воркера для работы c Push API

Спецификация Push API расширяет возможности сервис-воркеров для работы с push-сообщениями: позволяет отслеживать и реагировать на такие сообщения, а также следить за изменениями в подписках.

ServiceWorkerRegistration.pushManager Только для чтения

Позволяет обратиться к интерфейсу по управлению подписками PushManager, в том числе для добавления подписки, получения информации о текущей подписке, а также позволяет узнать о возможности отправки сообщений. Работа с push-сообщениями начинается с этого свойства сервис-воркера.

ServiceWorkerGlobalScope.onpush

Обработчик событий, срабатывает всякий раз, когда происходит событие push; то есть при получении push-сообщений от сервера.

ServiceWorkerGlobalScope.onpushsubscriptionchange

Обработчик событий, срабатывает всякий раз, когда происходит событие pushsubscriptionchange; будет полезен в ситуациях, когда подписка была просрочена или вот-вот будет просрочена (при условии, что для подписки был указан срок действия).

Примеры

На сайте-инструкции по работе с сервис-воркерами от Mozilla вы найдёте множество примеров использования Push API.

Спецификации

Спецификация
Push API

Совместимость с браузерами

api.PushEvent

BCD tables only load in the browser

api.PushMessageData

BCD tables only load in the browser

Смотрите также