Spec-Zone.ru › Web APIs

ServiceWorkerContainer: событие message

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

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

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

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

Событие message используется на странице, управляемой сервисным рабочим, для получения сообщений от сервисного рабочего.

Это событие нельзя отменить и не распространяется.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.

addEventListener("message", (event) => {});

onmessage = (event) => {};

Тип события

A MessageEvent. Наследуется от Event.

Событие MessageEvent

Свойства события

Этот интерфейс также наследует свойства от родительского интерфейса Event.

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

Данные, отправленные отправителем сообщения.

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

Строка, представляющая происхождение отправителя сообщения.

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

Строка, представляющая уникальный идентификатор события.

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

Объект MessageEventSource (который может быть объектом WindowProxy, MessagePort или ServiceWorker), представляющий отправителя сообщения.

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

Массив объектов MessagePort, представляющих порты, связанные с каналом, через который отправляется сообщение (если это применимо, например, при обмене сообщениями через канал или при отправке сообщения в общий рабочий процесс).

Примеры

В этом примере сервисный рабочий получает идентификатор клиента из события fetch и затем отправляет ему сообщение с помощью Client.postMessage:

// service-worker.js
async function messageClient(clientId) {
  const client = await clients.get(clientId);
  client.postMessage("Hi client!");
}

addEventListener("fetch", (event) => {
  messageClient(event.clientId);
  event.respondWith(() => {
    // …
  });
});

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

// main.js
navigator.serviceWorker.addEventListener("message", (message) => {
  console.log(message);
});

В качестве альтернативы, клиент может получить сообщение с помощью обработчика события onmessage:

// main.js
navigator.serviceWorker.onmessage = (message) => {
  console.log(message);
};

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

Спецификация
Сервисные рабочие
# dom-serviceworkercontainer-onmessage

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

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
message_event 40 17 44 27 11.1 40 44 27 11.3 4.0 40

См. также

  • Использование сервисных рабочих
  • Базовый пример кода сервисных рабочих
  • Использование веб-воркеров

© 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/ServiceWorkerContainer/message_event

Spec-Zone.ru

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