Spec-Zone.ru › Web APIs

ExtendableMessageEvent

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.

  • Узнать больше
  • Показать полную совместимость
  • Отправить отзыв

Примечание: Эта функция доступна только в рабочих потоках сервиса.

Интерфейс ExtendableMessageEvent API рабочих потоков сервиса представляет собой объект события message, сгенерированного в рабочем потоке сервиса (когда сообщение получено в ServiceWorkerGlobalScope из другого контекста) — увеличивает срок жизни таких событий.

Этот интерфейс наследуется от интерфейса ExtendableEvent.

Событие ExtendableEvent ExtendableMessageEvent

Конструктор

ExtendableMessageEvent()

Создаёт новый экземпляр объекта ExtendableMessageEvent.

Свойства экземпляра

Наследует свойства от родительского интерфейса ExtendableEvent.

ExtendableMessageEvent.data Только для чтения

Возвращает данные события. Они могут быть любого типа. Если отправлено в messageerror событии, свойство будет null.

ExtendableMessageEvent.origin Только для чтения

Возвращает источник Client, отправившего сообщение.

ExtendableMessageEvent.lastEventId Только для чтения

Представляет собой последний идентификатор события источника события в событиях, отправляемых по серверу.

ExtendableMessageEvent.source Только для чтения

Возвращает ссылку на объект Client, отправивший сообщение.

ExtendableMessageEvent.ports Только для чтения

Возвращает массив, содержащий объекты MessagePort, представляющие порты связанного канала сообщений.

Методы экземпляра

Наследует методы от родительского интерфейса ExtendableEvent.

Примеры

В примере ниже страница получает ссылку на объект ServiceWorker через ServiceWorkerRegistration.active, а затем вызывает его функцию postMessage().

// in the page being controlled
if (navigator.serviceWorker) {
  navigator.serviceWorker.register("service-worker.js");

  navigator.serviceWorker.addEventListener("message", (event) => {
    // event is a MessageEvent object
    console.log(`The service worker sent me a message: ${event.data}`);
  });

  navigator.serviceWorker.ready.then((registration) => {
    registration.active.postMessage("Hi service worker");
  });
}

Рабочий поток сервиса может получить сообщение, прослушивая событие message:

// in the service worker
addEventListener("message", (event) => {
  // event is an ExtendableMessageEvent object
  console.log(`The client sent me a message: ${event.data}`);

  event.source.postMessage("Hi client");
});

Спецификации

Спецификация
Рабочие потоки сервиса
# extendablemessageevent-interface

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
ExtendableMessageEvent 51 17 44 38 11.1 51 44 41 11.3 5.0 51
ExtendableMessageEvent 51 17 44 38 11.1 51 44 41 11.3 5.0 51
data 51 17 44 38 11.1 51 44 41 11.3 5.0 51
lastEventId 51 17 44 38 11.1 51 44 41 11.3 5.0 51
origin 51 17 44 38 11.1 51 44 41 11.3 5.0 51
ports 51 17 44 38 11.1 51 44 41 11.3 5.0 51
source 51 17 44 38 11.1 51 44 41 11.3 5.0 51

См. также

  • Использование рабочих потоков сервиса
  • Пример кода для рабочих потоков сервиса
  • Отправка сообщений по каналу

© 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/ExtendableMessageEvent

Spec-Zone.ru

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