RTCIceCandidate: relatedAddress 属性
RTCIceCandidate
接口的只读 relatedAddress
属性是一个字符串,指示中继或自反候选者的相关地址。
如果候选者是主机候选者(即,它的 address
实际上是远程对等点的真实 IP 地址),则 relatedAddress
为 null
。
relatedAddress
字段的值是从传递给 RTCIceCandidate()
构造函数的 candidateInfo
选项对象中设置的。您不能在选项对象中直接指定 relatedAddress
的值,但如果它以正确的格式(rel-address
字段),它的值会自动从对象的 candidate
a 行中提取。
相关地址和端口 (relatedPort
) 根本没有被 ICE 本身使用;它们仅用于分析和诊断目的,并且它们的包含可能会被安全系统阻止,因此不要依赖它们具有非 null
值。
值
一个包含候选者相关地址的字符串。对于对等点和服务器自反候选者,相关地址(和相关端口)是该服务器或对等点自反候选者的基础。对于中继候选者,相关地址和端口设置为 TURN 服务器选择的映射地址。
对于主机候选者,relatedAddress
为 null
,这意味着该字段未包含在候选者的 a 行中。
使用说明
尽管没有被 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
,然后根据候选者类型,包括候选者的 ip
和 relatedAddress
,呈现调试输出。
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 |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。