RTCDataChannel: событие error
Базовая версия Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Событие WebRTC error отправляется обработчику события onerror объекта RTCDataChannel, когда на канале данных возникает ошибка.
Объект RTCErrorEvent содержит подробности об ошибке; подробности см. в соответствующей статье.
Это событие не отменяется и не распространяется.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.
addEventListener("error", (event) => {});
onerror = (event) => {};
Тип события
Объект RTCErrorEvent. Наследуется от Event.
Свойства события
В дополнение к перечисленным ниже свойствам доступны свойства из родительского интерфейса Event.
Примеры
// 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