Spec-Zone.ru › Web APIs

ServiceWorkerContainer: событие messageerror

Базовая версия 2023
Новое

С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.

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

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

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

Событие messageerror срабатывает в ServiceWorkerContainer, когда приходящее сообщение, отправленное ассоциированному рабочему потоку, не может быть десериализовано.

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

Синтаксис

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

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

onmessageerror = (event) => {};

Тип события

Тип 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 self.clients.get(clientId);
  client.postMessage("Hi client!");
}

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

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

// main.js
navigator.serviceWorker.addEventListener("messageerror", (event) => {
  console.error("Receive message from service worker failed!");
});

В качестве альтернативы, сценарий может прослушивать ошибку десериализации сообщения, используя onmessageerror:

// main.js
navigator.serviceWorker.onmessageerror = (event) => {
  console.error("Receive message from service worker failed!");
};

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

Спецификация
Service Workers
# dom-serviceworkerglobalscope-onmessageerror

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

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
messageerror_event 80 8017–79 65 67 16.4
11.1–16.4Несмотря на поддержку свойства обработчика события onmessageerror, событие messageerror никогда не срабатывает.
80 65 57 16.4
11.3–16.4Несмотря на поддержку свойства обработчика события onmessageerror, событие messageerror никогда не срабатывает.
13.0 80

См. также

  • message
  • Client.postMessage()
  • Использование Service Workers
  • Пример кода Service Workers
  • Использование веб-рабочих потоков

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

Spec-Zone.ru

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