RTCIceCandidate: relatedPort 屬性
RTCIceCandidate 介面的只讀屬性 relatedPort 指示了反射(reflexive)或中繼(relay)候選者的埠號。
如果該候選者是主機(host)候選者(即,其 address 實際上是遠端對等方的真實 IP 地址),則 relatedPort 為 null。
relatedPort 欄位的值是從傳遞給 RTCIceCandidate() 建構函式的 candidateInfo options 物件設定的。你不能直接在 options 物件中指定 relatedPort 的值,但如果該物件的 candidate a-line 格式正確(rel-port 欄位),它的值會自動從中提取。
相關的地址(relatedAddress)和埠完全不被 ICE 本身使用;它們僅用於分析和診斷目的,並且其包含可能會被安全系統阻止,因此不要依賴它們擁有非 null 的值。
值
一個無符號 16 位值,包含候選者的相關埠號(如果存在)。對於對等反射(peer reflexive)和伺服器反射(server reflexive)候選者,相關地址和埠描述了該候選者的基地址。對於中繼(relay)候選者,相關地址和埠提供了 TURN 伺服器選擇的對映地址。
對於主機(host)候選者,relatedPort 為 null,這意味著該欄位未包含在候選者的 a-line 中。
用法說明
相關地址和埠本身並不被 ICE 使用,僅出於診斷和質量服務(Quality-of-Service)的目的而存在。出於安全原因,它們實際上可能會被省略,但如果存在,可以在除錯過程中作為有用的工具。請參閱 示例,其中展示了其中一部分。
這是由 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
遠端埠 relatedPort 是 a-line 上 "rport" 標籤後面的數字,或者為 32768。
示例
在此示例中,會檢查候選者的 type,然後根據候選者型別顯示除錯輸出,包括候選者的型別、地址(ip 和 port)以及相關地址(relatedAddress 和 relatedPort)。
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 |
瀏覽器相容性
載入中…