RTCDataChannel: error Ereignis
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.
Ein WebRTC error-Ereignis wird an den onerror Ereignishandler eines RTCDataChannel-Objekts gesendet, wenn ein Fehler im Datenkanal auftritt.
Das RTCErrorEvent-Objekt liefert Einzelheiten über den Fehler, der aufgetreten ist; siehe diesen Artikel für Details.
Dieses Ereignis ist nicht stornierbar und wird nicht gebubbelt.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignisbehandlereigenschaft.
addEventListener("error", (event) => { })
onerror = (event) => { }
Ereignistyp
Ein RTCErrorEvent. Erbt von Event.
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 eine Fehlermeldung, die von der WebRTC-Schicht angegeben wird.
Fehlerinformationen werden mit console.error() an die Konsole ausgegeben. Der message-String wird immer ausgegeben, ebenso wie Informationen über den Namen der Quelldatei, die Zeilennummer und die Spaltennummer, an denen der Fehler aufgetreten ist.
Darüber hinaus können je nach Wert von errorDetail zusätzliche Informationen ausgegeben werden. Jeder Fehlertyp hat eine unterschiedliche Menge an ausgegebenen Informationen. Zum Beispiel zeigt ein SDP-Syntaxfehler die Zeilennummer des Fehlers innerhalb des SDP an, und ein SCTP-Fehler zeigt eine Nachricht an, die dem SCTP-Ursachencode entspricht. Andere Fehlertypen geben ähnlich geeignete Informationen aus.
Sie können auch einen Ereignishandler für error-Ereignisse mit der onerror-Ereignishandlereigenschaft der RTCDataChannel-Schnittstelle einrichten:
dc.onerror = (ev) => {
const err = ev.error;
// …
};
Hinweis:
Da RTCError nicht zu den älteren Fehlern gehört, ist der Wert von RTCError.code immer 0.
Spezifikationen
| Spezifikation |
|---|
| WebRTC: Real-Time Communication in Browsers> # event-datachannel-error> |
| WebRTC: Real-Time Communication in Browsers> # dom-rtcdatachannel-onerror> |
Browser-Kompatibilität
Siehe auch
- WebRTC API
- Ein einfaches RTCDataChannel-Beispiel
- Verwandte Ereignisse:
open,messageundclose