RTCPeerConnection:icecandidateerror 事件

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

当通过 STUNTURN 服务器进行 ICE 协商时发生错误,则会向 RTCPeerConnection 发送 WebRTC APIicecandidateerror 事件。该事件对象类型为 RTCPeerConnectionIceErrorEvent,并包含一些详细描述错误的信心。

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

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

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

onicecandidateerror = (event) => { }

事件类型

一个 RTCPeerConnectionIceErrorEvent。继承自 Event

Event RTCPeerConnectionIceErrorEvent

事件属性

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

浏览器兼容性