RTCIceCandidate:relatedPort 属性

RTCIceCandidate 接口的只读 relatedPort 属性指示反射候选或中继候选的端口号。

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

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

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

一个无符号的 16 位值,包含候选的相关端口号(如果有)。对于对等方和服务器反射候选,相关地址和端口描述该候选的基础。对于中继候选,相关地址和端口提供 TURN 服务器选择的映射地址。

对于主机候选,relatedPortnull,这意味着该字段未包含在候选的 a 行中。

使用说明

相关地址和端口不被 ICE 本身使用,仅用于诊断和服务质量目的。实际上,它们可能出于安全原因而被省略,但如果存在,则在调试期间可能是一个有用的工具。请参阅 示例,其中显示了其中一部分。

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

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

远程端口 relatedPort 是 a 行中紧随“rport”标签后的数字,或 32768。

示例

在此示例中,检查候选的 type,然后根据候选类型呈现调试输出,包括候选的类型、地址 (ipport) 以及相关地址 (relatedAddressrelatedPort)。

js
const ip = candidate.address;
const port = candidate.port;
const relIP = candidate.relatedAddress;
const relPort = candidate.relatedPort;

if (relIP && relPort) {
  console.log(
    `Candidate type '${type}' — contact address: ${ip} ${port}, related address: ${relIP} ${relPort}`,
  );
} else {
  console.log(`Host candidate address is ${ip} ${port}`);
}

规范

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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅