RTCDataChannel: error event - Web APIs 编辑
A WebRTC error
event is sent to an RTCDataChannel
object's onerror
error handler when an error occurs on the data channel.
Bubbles | Yes |
---|---|
Cancelable | No |
Interface | RTCErrorEvent |
Event handler property | onerror |
The RTCErrorEvent
object provides details about the error that occurred; see that article for details.
Examples
// Strings for each of the SCTP cause codes found in RFC
// 4960, section 3.3.10:
// https://tools.ietf.org/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 DLTS failure alert: ", err.receivedAlert);
}
if (err.sentAlert) {
console.error(" Sent DLTS 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);
The received event provides details in an RTCError
object called error
; RTCError
is an extension of the DOMException
interface. The error's name
is RTCError
and the message
is an error string specified by the WebRTC layer.
Error information is output to the console using console.error()
. The message
string is always output, as is information about the source file's name, line number, and column number at which the error occurred.
In addition, however, depending on the value of errorDetail
, additional information may be output. Each error type has a different set of information output. For example, an SDP syntax error displays the line number of the error within the SDP, and an SCTP error displays a message corresponding to the SCTP cause code. Other error types similarly output appropriate information.
You can also set up an event handler for error
events using the RTCDataChannel
interface's onerror
event handler property:
dc.onerror = ev => {
const err = ev.error;
/* ... */
}
Note: Since RTCError
is not one of the legacy errors, the value of RTCError.code
is always 0.
Specifications
Specification | Status | Comment |
---|---|---|
WebRTC 1.0: Real-time Communication Between Browsers The definition of 'error event' in that specification. | Candidate Recommendation | Initial specification. |
Browser compatibility
BCD tables only load in the browser
See also
- WebRTC API
- A simple RTCDataChannel example
- Related events:
open
,message
, andclose
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论