RTCPeerConnection: icecandidateerror 事件
当通过 STUN 或 TURN 服务器执行 ICE 协商时发生错误时,WebRTC API 事件 icecandidateerror
会发送到 RTCPeerConnection
。事件对象类型为 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 |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。