RTCDataChannel: error event
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Januar 2020.
Ein WebRTC-error
-Ereignis wird an den onerror
-Ereignishandler eines RTCDataChannel
-Objekts gesendet, wenn ein Fehler auf dem Datenkanal auftritt.
Das RTCErrorEvent
-Objekt liefert Details über den aufgetretenen Fehler; siehe diesen Artikel für weitere Informationen.
Dieses Ereignis kann nicht abgebrochen werden und wird nicht propagiert.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
, oder legen Sie eine Ereignishandler-Eigenschaft fest.
addEventListener("error", (event) => { })
onerror = (event) => { }
Ereignistyp
Ein RTCErrorEvent
. Erbt von Event
.
Ereigniseigenschaften
Zusätzlich zu den unten aufgeführten Eigenschaften sind Eigenschaften der Elternschnittstelle, Event
, verfügbar.
Beispiele
// 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,
);
});
Das empfangene Ereignis liefert Details in einem RTCError
-Objekt namens error
; RTCError
ist eine Erweiterung der DOMException
-Schnittstelle. Der name
des Fehlers ist RTCError
und die message
ist ein vom WebRTC-Layer spezifizierter Fehlerstring.
Fehlerinformationen werden mit console.error()
an die Konsole ausgegeben. Der message
-String wird immer ausgegeben, ebenso wie Informationen zum Namen der Quelldatei, Zeilennummer und Spaltennummer, an der der Fehler aufgetreten ist.
Darüber hinaus können jedoch, abhängig vom Wert von errorDetail
, zusätzliche Informationen ausgegeben werden. Jeder Fehlertyp gibt einen anderen Satz von Informationen aus. Beispielsweise zeigt ein SDP-Syntaxfehler die Zeilennummer des Fehlers innerhalb des SDP an, und ein SCTP-Fehler zeigt eine Nachricht, die dem SCTP-Ursachencode entspricht. Andere Fehlertypen geben ähnlich geeignete Informationen aus.
Sie können auch einen Ereignishandler für error
-Ereignisse über die onerror
-Ereignishandler-Eigenschaft der RTCDataChannel
-Schnittstelle einrichten:
dc.onerror = (ev) => {
const err = ev.error;
// …
};
Hinweis:
Da RTCError
nicht zu den Legacy-Fehlern gehört, ist der Wert von RTCError.code
immer 0.
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers> # event-datachannel-error> |
WebRTC: Real-Time Communication in Browsers> # dom-rtcdatachannel-onerror> |
Browser-Kompatibilität
Loading…
Siehe auch
- WebRTC API
- Ein einfaches RTCDataChannel-Beispiel
- Verwandte Ereignisse:
open
,message
undclose