Spec-Zone.ru › Web APIs

RTCDataChannel: событие error

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

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

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

Событие WebRTC error отправляется обработчику события onerror объекта RTCDataChannel, когда на канале данных возникает ошибка.

Объект RTCErrorEvent содержит подробности об ошибке; подробности см. в соответствующей статье.

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

Синтаксис

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

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

onerror = (event) => {};

Тип события

Объект RTCErrorEvent. Наследуется от Event.

Событие RTCErrorEvent

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

В дополнение к перечисленным ниже свойствам доступны свойства из родительского интерфейса Event.

error Только для чтения

Объект RTCError, описывающий произошедшую ошибку; этот объект включает тип произошедшей ошибки и информацию о месте возникновения ошибки (например, номер строки в SDP или код причины ошибки SCTP).

Примеры

// Strings for each of the SCTP cause codes found in RFC
// 4960, section 3.3.10:
// https://datatracker.ietf.org/doc/html/rfc4960#section-3.3.10

const sctpCauseCodes = [
  "No SCTP error",
  "Invalid stream identifier",
  "Missing mandatory parameter",
  "Stale cookie error",
  "Sender is out of resource (i.e., memory)",
  "Unable to resolve address",
  "Unrecognized SCTP chunk type received",
  "Invalid mandatory parameter",
  "Unrecognized parameters",
  "No user data (SCTP DATA chunk has no data)",
  "Cookie received while shutting down",
  "Restart of an association with new addresses",
  "User-initiated abort",
  "Protocol violation",
];

dc.addEventListener(
  "error",
  (ev) => {
    const err = ev.error;

    console.error("WebRTC error: ", err.message);

    // Handle specific error detail types

    switch (err.errorDetail) {
      case "sdp-syntax-error":
        console.error("    SDP syntax error in line ", err.sdpLineNumber);
        break;
      case "idp-load-failure":
        console.error(
          "    Identity provider load failure: HTTP error ",
          err.httpRequestStatusCode,
        );
        break;
      case "sctp-failure":
        if (err.sctpCauseCode < sctpCauseCodes.length) {
          console.error("    SCTP failure: ", err.sctpCauseCode);
        } else {
          console.error("    Unknown SCTP error");
        }
        break;
      case "dtls-failure":
        if (err.receivedAlert) {
          console.error("    Received DTLS failure alert: ", err.receivedAlert);
        }
        if (err.sentAlert) {
          console.error("    Sent DTLS failure alert: ", err.receivedAlert);
        }
        break;
    }

    // Add source file name and line information

    console.error(
      "    Error in file ",
      err.filename,
      " at line ",
      err.lineNumber,
      ", column ",
      err.columnNumber,
    );
  },
  false,
);

Полученное событие предоставляет подробности в объекте RTCError с именем error; RTCError является расширением интерфейса DOMException. Свойство name ошибки равно RTCError, а свойство message содержит строку ошибки, указанную слоем WebRTC.

Информация об ошибке выводится в консоль с помощью console.error(). Строка message всегда выводится, а также информация о имени исходного файла, номере и столбце строки, в которых произошла ошибка.

Кроме того, в зависимости от значения errorDetail может быть выведена дополнительная информация. Каждый тип ошибки имеет свой набор выводимой информации. Например, при синтаксической ошибке SDP отображается номер строки ошибки в SDP, а при ошибке SCTP отображается сообщение, соответствующее коду причины SCTP. Другие типы ошибок аналогичным образом выводят соответствующую информацию.

Вы также можете настроить обработчик событий для событий error с помощью свойства обработчика событий интерфейса RTCDataChannel:

dc.onerror = (ev) => {
  const err = ev.error;

  // …
};

Примечание: Поскольку RTCError не является одной из устаревших ошибок, значение RTCError.code всегда равно 0.

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

Спецификация
WebRTC: Реальное общение в браузерах
# event-datachannel-error
WebRTC: Реальное общение в браузерах
# dom-rtcdatachannel-onerror

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

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
error_event 24 79 22 15 11 25 24 14 11 1.5 4.4

См. также

  • API WebRTC
  • Пример простой RTCDataChannel
  • Связанные события: open, message и close

© 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/RTCDataChannel/error_event

Spec-Zone.ru

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