RTCIceCandidate: relatedAddress 属性

Baseline 2024
新推出

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

RTCIceCandidate 接口的只读属性 relatedAddress 是一个字符串,用于指示中继或反射候选者的相关地址

如果候选者是主机候选者(即,其 address 实际上是远程对等方的真实 IP 地址),则 relatedAddressnull

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

相关地址和端口(relatedPort)根本不被 ICE 本身使用;它们仅用于分析和诊断目的,并且其包含可能被安全系统阻止,因此不要依赖它们具有非 null 值。

一个包含候选者相关地址的字符串。对于对等反射和服务器反射候选者,相关地址(和相关端口)是该服务器或对等反射候选者的基础。对于中继候选者,相关地址和端口设置为 TURN 服务器选择的映射地址。

对于主机候选者,relatedAddressnull,这意味着该字段未包含在候选者的 a-line 中。

用法说明

相关地址包含在 ICE 候选者中,尽管 ICE 本身不使用它。relatedAddress 可用于诊断目的;通过观察各种候选者类型与其地址和相关地址之间的关系。relatedAddress 也可由服务质量 (QoS) 机制使用。

这是一个由 STUN 服务器发现的 ICE 候选者描述的 SDP 属性行(a-line)。

a=candidate:4234997325 1 udp 2043278322 192.0.2.172 6502 typ srflx raddr 198.51.100.45 rport 32768 generation 0

远程地址 relatedAddress 是紧跟在文本 "raddr" 后面的点分四段地址(IPv4)或冒号分隔的 64 位地址(IPv6),或者为 "198.51.100.45"

示例

在此示例中,会检查候选者的 type,然后根据候选者类型显示调试输出,包括候选者的 iprelatedAddress

js
switch (candidate.type) {
  case "host":
    console.log(`Host candidate's IP address is ${candidate.address}`);
    break;
  case "srflx":
    console.log(
      `Server reflexive candidate's base address is ${candidate.relatedAddress}; reachable at ${candidate.address}`,
    );
    break;
  case "prflx":
    console.log(
      `Peer reflexive candidate's base address is ${candidate.relatedAddress}; reachable at ${candidate.address}`,
    );
    break;
  case "relay":
    console.log(
      `Relay candidate's address assigned by the TURN server is ${candidate.relatedAddress}; reachable at ${candidate.address}`,
    );
    break;
}

规范

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

浏览器兼容性

另见