RTCIceCandidate: protocol 属性

Baseline 2024
新推出

自 2024 年 5 月以来,此功能已在最新设备和浏览器版本中可用。此功能可能不适用于较旧的设备或浏览器。

RTCIceCandidate 接口的只读 **protocol** 属性是一个字符串,用于指示候选者是使用 UDP 还是 TCP 作为其传输协议。

protocol 字段的值是从传递给 RTCIceCandidate() 构造函数的 candidateInfo 选项对象设置的。您不能在选项对象中直接指定 protocol 的值,但如果对象的 candidate a-line 格式正确,其值将自动从中提取。

如果未在 SDP 中正确指定,protocol 默认值为 null,但这是一种错误情况,在调用 RTCPeerConnection.addIceCandidate() 时将导致抛出异常。

指示候选者使用的网络协议的字符串

tcp

如果选定,该候选者将使用 TCP 作为其数据的传输协议。 tcpType 属性提供了有关该对象所代表的 TCP 候选者种类的额外信息。

udp

该候选者将使用 UDP 传输协议传输其数据。由于其更好的性能特征,这是媒体交互的首选协议。

注意:如果 protocolnull — 并且 protocol用户代理支持 — 将候选者传递给 addIceCandidate() 将失败,并抛出 OperationError 异常。

用法说明

以下是 ICE 事务中的一个示例候选者 a-line

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

第三个字段 "udp" 是协议类型,表明该候选者将使用 UDP 传输协议。

示例

此代码段检查 protocol 的值,以确定是否应查看 tcpType 的值,以判断它是否为 **simultaneous-open** (S-O) 候选者。

js
if (candidate.protocol === "tcp") {
  if (candidate.tcpType === "so") {
    adjustForSimultaneousOpen(candidate);
  }
}

规范

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

浏览器兼容性