RTCIceCandidate: candidate 属性
RTCIceCandidate 接口上只读的 candidate 属性会返回一个详细描述该 candidate 的字符串。RTCIceCandidate 的其他大部分属性实际上是从这个字符串中提取出来的。
可以通过传递给 RTCIceCandidate() 构造函数的对象的 candidate 属性,或者传递给 RTCPeerConnection.addIceCandidate() 方法的对象中的 candidate 属性来配置此属性。
值
一个描述 candidate 属性的字符串,直接取自 SDP 属性 "candidate"。candidate 字符串指定了 candidate 的网络连接信息。如果 candidate 是一个空字符串 (""),则表示已到达 candidate 列表的末尾;这个 candidate 被称为“结束标记”。
候选字符串的语法在 RFC 5245, section 15.1 中进行了描述。对于如下 a-line (属性行):
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"。
在所有条件都相同的情况下,用户代理总是优先选择具有最高 priority 的候选。在上面的示例中,优先级是 2043278322。属性之间都用单个空格字符分隔,并且顺序是固定的。此示例候选的完整属性列表是:
示例
在此示例中,我们看到一个函数,它接收一个 SDP 字符串作为输入,该字符串包含在信令过程中从远程对等方收到的 ICE candidate。
function handleNewIceCandidate(candidateSDP) {
const candidateObj = new RTCIceCandidate(candidateSDP);
myPeerConnection.addIceCandidate(candidateObj).catch({
/* handle the error thrown by addIceCandidate() */
});
}
此处显示的 handleNewIceCandidate() 函数会将收到的 candidate 的 SDP 文本传递给 RTCIceCandidate(),以返回一个 RTCIceCandidate 对象,该对象代表了该 candidate。
然后将新的 candidate 传递给 RTCPeerConnection.addIceCandidate(),以便将 candidate 添加到 WebRTC 将要用于建立连接的 candidate 列表中。
规范
| 规范 |
|---|
| WebRTC:浏览器中的实时通信 # dom-rtcicecandidate-candidate |
浏览器兼容性
加载中…