Spec-Zone.ru › Web APIs

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 61
49Доступно только в глобальных областях Window и ServiceWorker.
79 Нет Нет Нет 61
49Доступно только в глобальных областях Window и ServiceWorker.
Нет Нет Нет 8.0
5.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API