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

瀏覽器相容性

另見