RTCPeerConnection:icecandidateerror 事件
当通过 STUN 或 TURN 服务器进行 ICE 协商时发生错误,则会向 RTCPeerConnection 发送 WebRTC API 的 icecandidateerror 事件。该事件对象类型为 RTCPeerConnectionIceErrorEvent,并包含一些详细描述错误的信心。
此事件不可取消,也不会冒泡。
语法
在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。
addEventListener("icecandidateerror", (event) => { })
onicecandidateerror = (event) => { }
事件类型
一个 RTCPeerConnectionIceErrorEvent。继承自 Event。
事件属性
RTCPeerConnectionIceErrorEvent 接口包含 Event 接口中的属性,以及以下属性:
address只读-
一个字符串,提供用于与用于协商连接的 STUN 或 TURN 服务器通信的本地 IP 地址。如果本地 IP 地址尚未作为本地 ICE 候选的一部分公开,则为
null。 errorCode只读-
一个无符号整数值,表示 STUN 或 TURN 服务器返回的 STUN 错误代码。如果无法到达任何主机候选服务器,则此属性设置为数字 701,该数字超出有效 STUN 错误代码的范围。701 错误每个服务器 URL 只触发一次,并且仅在
iceGatheringState为gathering时触发。 errorText只读-
一个字符串,包含 STUN 或 TURN 服务器返回的 STUN 原因文本。如果根本无法与 STUN 或 TURN 服务器建立通信,则此字符串将是浏览器特定的错误说明字符串。
port只读-
一个无符号整数值,表示通过
address中提供的 IP 地址与 STUN 或 TURN 服务器通信的端口号。如果连接尚未建立(即,如果address为null),则为null。 url只读-
一个字符串,指示发生错误的 STUN 或 TURN 服务器的 URL。
描述
错误对象的 errorCode 属性是 STUN 错误代码之一。还有一个 WebRTC 特有的错误,超出有效 STUN 错误代码范围:701。错误 701 表示 ICE 候选无法成功连接到 STUN 或 TURN 服务器。
701 错误在创建 RTCPeerConnection 时提供的可用 STUN 或 TURN 服务器列表中,每个服务器 URL 只触发一次。这些错误仅在连接的 ICE 收集状态为 gathering 时发生。
示例
以下示例为 RTCPeerConnection 对象 pc 上的 icecandidateerror 事件建立了一个处理程序。此处理程序专门查找指示候选无法到达 STUN 或 TURN 服务器的 701 错误。
发生这种情况时,服务器 URL 和错误消息将传递给一个名为 reportConnectFail() 的函数,以记录或输出连接失败。
pc.addEventListener("icecandidateerror", (event) => {
if (event.errorCode === 701) {
reportConnectFail(event.url, event.errorText);
}
});
请注意,如果创建连接时提供了多个 STUN 和/或 TURN 服务器,如果其中一个以上服务器失败,此错误可能会发生多次。提供的每个服务器都会被尝试,直到建立连接为止。
规范
| 规范 |
|---|
| WebRTC:浏览器中的实时通信 # dom-rtcpeerconnection-onicecandidateerror |
浏览器兼容性
加载中…