RTCPeerConnection: icecandidateerror 事件

当通过 STUNTURN 服务器执行 ICE 协商时发生错误时,WebRTC API 事件 icecandidateerror 会发送到 RTCPeerConnection。事件对象类型为 RTCPeerConnectionIceErrorEvent,并包含一些详细的错误信息。

此事件不可取消,也不会冒泡。

语法

在像 addEventListener() 这样的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("icecandidateerror", (event) => {});

onicecandidateerror = (event) => {};

事件类型

事件属性

RTCPeerConnectionIceErrorEvent 接口包含 Event 接口中的属性,以及以下属性

address 只读

一个字符串,提供用于与 STUNTURN 服务器通信的本地 IP 地址,用于协商连接,如果本地 IP 地址尚未作为本地 ICE 候选的一部分公开,则为 null

errorCode 只读

一个无符号整数值,表示 STUN 或 TURN 服务器返回的数字 STUN 错误代码。如果没有任何主机候选能够到达服务器,则此属性设置为数字 701,该数字不在有效 STUN 错误代码范围内。701 错误仅在每个服务器 URL 上触发一次,并且仅在 icegatheringstategathering 时触发。

errorText 只读

一个包含 STUN 或 TURN 服务器返回的 STUN 原因文本的字符串。如果根本无法与 STUN 或 TURN 服务器建立通信,则此字符串将是一个浏览器特定的字符串,解释了错误。

port 只读

一个无符号整数值,表示使用 address 中给定的 IP 地址与 STUN 或 TURN 服务器通信的端口号。如果连接尚未建立(即,如果 addressnull),则为 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() 的函数,以记录或输出连接失败。

js
pc.addEventListener("icecandidateerror", (event) => {
  if (event.errorCode === 701) {
    reportConnectFail(event.url, event.errorText);
  }
});

请注意,如果在创建连接时提供多个 STUN 和/或 TURN 服务器,则如果多个服务器失败,此错误可能会发生多次。会尝试每个提供的服务器,直到建立连接。

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcpeerconnection-onicecandidateerror

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。