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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
PushEvent
PushEvent() constructor
data

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

api.PushMessageData

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
PushMessageData
arrayBuffer
blob
bytes
json
text

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
See implementation notes.

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