Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since март 2023 г..
Примечание: Эта возможность доступна в Web Workers.
Push API предоставляет веб-приложениям возможность принимать сообщения с сервера независимо от того, запущено веб-приложение прямо сейчас или нет. Что в свою очередь позволяет разработчикам оперативно уведомлять пользователей, которые разрешили присылать себе уведомления о новом контенте.
Обратите внимание: При использовании PushManager-подписок жизненно важно защищать запросы от CSRF/XSRF-атак в вашем приложении. Подробнее читайте по ссылкам:
Для получения сообщений от сервера у приложения должен быть активированный сервис-воркер. После активации у сервис-воркера появится возможность подписаться на канал для получения сообщений, используя PushManager.subscribe().
В результате подписки будет получен объект PushSubscription со всей необходимой информацией, которая может потребоваться приложению для обращения за сообщениями на сервер: URL-адрес и ключ шифрования.
После подписки сервис-воркеру можно добавить обработчик ServiceWorkerGlobalScope.onpush для получения сообщений от сервера. В качестве реакции на сообщение можно, например, обращаться к серверу за данными и показывать пользователю уведомление с помощью метода ServiceWorkerRegistration.showNotification().
Для сервис-воркера каждая подписка уникальна, а её URL-адрес — уникальная специальная ссылка. Поскольку это всё, что нужно для обращения к серверу, данную ссылку нужно держать в секрете, иначе любое другое приложение сможет воспользоваться вашим сервером.
Для получения push-сообщений сервис-воркеру требуются ресурсы, что может влиять, например, на расход батареи. Во всех браузерах эти проблемы решаются по-разному, какого-то единого стандарта на этот счёт нет. Например, браузер Firefox ограничивает количество сообщений, которое можно отправить приложению, однако сообщения с показом уведомления в этот лимит не попадают. В Chrome таких ограничений нет.
Описывает действие, направленное в глобальную область видимости сервис-воркера. Включает информацию, переданную сервером подписчикам.
PushManagerПредоставляет возможность подписаться на сообщения от сторонних серверов и получить URL-адрес для отправки push-уведомлений.
PushMessageDataСодержит данные, отправленные сервером, и методы для управления ими.
PushSubscriptionПредоставляет возможность получить URL-адрес подписки, а также содержит метод для отписки.
PushSubscriptionOptionsОписывает параметры конкретной подписки.
Спецификация Push API расширяет возможности сервис-воркеров для работы с push-сообщениями: позволяет отслеживать и реагировать на такие сообщения, а также следить за изменениями в подписках.
ServiceWorkerRegistration.pushManager Только для чтенияПозволяет обратиться к интерфейсу по управлению подписками PushManager, в том числе для добавления подписки, получения информации о текущей подписке, а также позволяет узнать о возможности отправки сообщений. Работа с push-сообщениями начинается с этого свойства сервис-воркера.
ServiceWorkerGlobalScope.onpushОбработчик событий, срабатывает всякий раз, когда происходит событие push; то есть при получении push-сообщений от сервера.
ServiceWorkerGlobalScope.onpushsubscriptionchangeОбработчик событий, срабатывает всякий раз, когда происходит событие pushsubscriptionchange; будет полезен в ситуациях, когда подписка была просрочена или вот-вот будет просрочена (при условии, что для подписки был указан срок действия).
На сайте-инструкции по работе с сервис-воркерами от Mozilla вы найдёте множество примеров использования Push API.
| Push API |
Enable JavaScript to view this browser compatibility table.
Enable JavaScript to view this browser compatibility table.
This page was last modified on 17 дек. 2024 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.