RTCIceCandidate:candidate 属性

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

RTCIceCandidate 接口的 candidate 只读属性返回一个详细描述候选者的字符串。RTCIceCandidate 的大多数其他属性实际上都是从这个字符串中提取的。

可以使用传递给 RTCIceCandidate() 构造函数或 RTCPeerConnection.addIceCandidate() 对象的 candidate 属性来配置此属性。

直接从 SDP 属性 "candidate" 中获取的一个描述候选者属性的字符串。候选者字符串指定了候选者的网络连接信息。如果 candidate 是一个空字符串(""),则已经到达了候选列表的末尾;这个候选者被称为 "end-of-candidates"(候选结束)标记。候选者字符串的语法在 RFC 5245, section 15.1 中描述。假设一个属性行内容如下:

a=candidate:4234997325 1 udp 2043278322 192.0.2.172 44323 typ host

相应的 candidate 字符串的值将是:"candidate:4234997325 1 udp 2043278322 192.0.2.172 44323 typ host"。其他条件相同时,用户代理将选择具有最高优先级的候选者。在上面的示例中,优先级为 2043278322。每个候选者属性都用单个空格字符分隔,并且按特定顺序排列。此示例候选者的属性完整列表为:

示例

在下面这个例子中,我们看到函数接收一个 ICE 候选者的 SDP 字符串作为参数输入,该字符串是在信令过程中从远程对等端接收到的。

js
function handleNewIceCandidate(candidateSDP) {
  const candidateObj = new RTCIceCandidate(candidateSDP);

  myPeerConnection.addIceCandidate(candidateObj).catch({
    /* 处理 addIceCandidate() 引发的错误 */
  });
}

函数 handleNewIceCandidate() 将接收到的候选者的 SDP 文本传递给 RTCIceCandidate() 构造函数,以获得一个表示该候选者的 RTCIceCandidate 实例。然后将新候选者实例传递给 RTCPeerConnection.addIceCandidate() 方法,将候选者添加到 WebRTC 建立连接时要考虑使用的候选者列表中。

规范

Specification
WebRTC: Real-Time Communication in Browsers
# dom-rtcicecandidate-candidate

浏览器兼容性

BCD tables only load in the browser