API синхронизации в фоновом режиме
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
API синхронизации в фоновом режиме позволяет веб-приложению откладывать задачи, чтобы они выполнялись в сервисном рабочем процессе после того, как пользователь подключится к стабильному сетевому соединению.
Основные понятия и использование
API синхронизации в фоновом режиме позволяет веб-приложениям откладывать работу по синхронизации с сервером до обработки их сервисными рабочими процессами в более позднее время, если устройство отключено от сети. Это может включать отправку запросов в фоновом режиме, если их нельзя было отправить во время использования приложения.
Например, приложение-клиент электронной почты может позволить пользователям составлять и отправлять сообщения в любое время, даже когда устройство не подключено к сети. Фронтенд приложения просто регистрирует запрос на синхронизацию, и сервисный рабочий процесс получает уведомление о наличии сети и обрабатывает синхронизацию.
Интерфейс SyncManager доступен через ServiceWorkerRegistration.sync. Уникальный идентификатор тега используется для именования события синхронизации, которое затем можно прослушивать в скрипте ServiceWorker. После получения события вы можете выполнить любые доступные функции, такие как отправка запросов на сервер.
Так как этот API опирается на сервисные рабочие процессы, функции, предоставляемые этим API, доступны только в безопасном контексте.
Интерфейсы
-
SyncManagerЭкспериментальный -
Регистрирует задачи, которые должны быть выполнены в сервисном рабочем процессе в более позднее время, когда устройство будет подключено к сети. Эти задачи называются *запросами синхронизации в фоновом режиме*.
-
SyncEventЭкспериментальный -
Представляет событие синхронизации, отправляемое в глобальную область
ServiceWorker. Это предоставляет способ выполнения задач в сервисном рабочем процессе, как только устройство получит сетевое подключение.
Расширения других интерфейсов
Следующие дополнения к API сервисных рабочих процессов предоставляют точку входа для настройки синхронизации в фоновом режиме.
-
ServiceWorkerRegistration.syncТолько для чтения -
Возвращает ссылку на интерфейс
SyncManagerдля регистрации задач, которые должны выполняться после подключения устройства к сети. -
syncсобытие -
Обработчик событий, срабатывающий всякий раз, когда происходит событие
sync. Это происходит сразу же, как только доступна сеть.
Примеры
В следующих примерах показано, как использовать интерфейс.
Запрос синхронизации в фоновом режиме
Следующая асинхронная функция регистрирует синхронизацию в фоновом режиме из контекста просмотра:
async function syncMessagesLater() {
const registration = await navigator.serviceWorker.ready;
try {
await registration.sync.register("sync-messages");
} catch {
console.log("Background Sync could not be registered!");
}
}
Проверка задачи синхронизации в фоновом режиме по тегу
Этот код проверяет, зарегистрирована ли задача синхронизации в фоновом режиме с заданным тегом.
navigator.serviceWorker.ready.then((registration) => {
registration.sync.getTags().then((tags) => {
if (tags.includes("sync-messages")) {
console.log("Messages sync already requested");
}
});
});
Прослушивание события синхронизации в фоновом режиме в сервисном рабочем процессе
Следующий пример демонстрирует, как реагировать на событие синхронизации в фоновом режиме в сервисном рабочем процессе.
self.addEventListener("sync", (event) => {
if (event.tag === "sync-messages") {
event.waitUntil(sendOutboxMessages());
}
});
Спецификации
| Спецификация |
|---|
| Веб-синхронизация в фоновом режиме |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
Background_Synchronization_API |
49 | 79 | Нет | 24 | Нет | 49 | Нет | 24 | Нет | 5.0 | Нет |
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
Background_Synchronization_API |
49 | 79 | Нет | 36 | Нет | 49 | Нет | 36 | Нет | 5.0 | Нет |
getTags |
49 | 79 | Нет | 36 | Нет | 49 | Нет | 36 | Нет | 5.0 | Нет |
register |
49 | 79 | Нет | 36 | Нет | 49 | Нет | 36 | Нет | 5.0 | Нет |
worker_support |
6149Доступно только в глобальных областяхWindow и ServiceWorker. |
79 | Нет | Нет | Нет | 6149Доступно только в глобальных областяхWindow и ServiceWorker. |
Нет | Нет | Нет | 8.05.0Доступно только в глобальных областяхWindow и ServiceWorker. |
Нет |
api.SyncManager
Таблицы BCD загружаются только в браузере
api.ServiceWorkerGlobalScope.sync_event
Таблицы BCD загружаются только в браузере
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Background_Synchronization_API