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