RTCPeerConnection:icecandidateerror 事件
當透過 STUN 或 TURN 伺服器進行 ICE 協商時發生錯誤,則會向 RTCPeerConnection 傳送 WebRTC API 的 icecandidateerror 事件。該事件物件型別為 RTCPeerConnectionIceErrorEvent,幷包含一些詳細描述錯誤的信心。
此事件不可取消,也不會冒泡。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
addEventListener("icecandidateerror", (event) => { })
onicecandidateerror = (event) => { }
事件型別
一個 RTCPeerConnectionIceErrorEvent。繼承自 Event。
事件屬性
RTCPeerConnectionIceErrorEvent 介面包含 Event 介面中的屬性,以及以下屬性:
address只讀-
一個字串,提供用於與用於協商連線的 STUN 或 TURN 伺服器通訊的本地 IP 地址。如果本地 IP 地址尚未作為本地 ICE 候選的一部分公開,則為
null。 errorCode只讀-
一個無符號整數值,表示 STUN 或 TURN 伺服器返回的 STUN 錯誤程式碼。如果無法到達任何主機候選伺服器,則此屬性設定為數字 701,該數字超出有效 STUN 錯誤程式碼的範圍。701 錯誤每個伺服器 URL 只觸發一次,並且僅在
iceGatheringState為gathering時觸發。 errorText只讀-
一個字串,包含 STUN 或 TURN 伺服器返回的 STUN 原因文字。如果根本無法與 STUN 或 TURN 伺服器建立通訊,則此字串將是瀏覽器特定的錯誤說明字串。
port只讀-
一個無符號整數值,表示透過
address中提供的 IP 地址與 STUN 或 TURN 伺服器通訊的埠號。如果連線尚未建立(即,如果address為null),則為null。 url只讀-
一個字串,指示發生錯誤的 STUN 或 TURN 伺服器的 URL。
描述
錯誤物件的 errorCode 屬性是 STUN 錯誤程式碼之一。還有一個 WebRTC 特有的錯誤,超出有效 STUN 錯誤程式碼範圍:701。錯誤 701 表示 ICE 候選無法成功連線到 STUN 或 TURN 伺服器。
701 錯誤在建立 RTCPeerConnection 時提供的可用 STUN 或 TURN 伺服器列表中,每個伺服器 URL 只觸發一次。這些錯誤僅在連線的 ICE 收集狀態為 gathering 時發生。
示例
以下示例為 RTCPeerConnection 物件 pc 上的 icecandidateerror 事件建立了一個處理程式。此處理程式專門查詢指示候選無法到達 STUN 或 TURN 伺服器的 701 錯誤。
發生這種情況時,伺服器 URL 和錯誤訊息將傳遞給一個名為 reportConnectFail() 的函式,以記錄或輸出連線失敗。
pc.addEventListener("icecandidateerror", (event) => {
if (event.errorCode === 701) {
reportConnectFail(event.url, event.errorText);
}
});
請注意,如果建立連線時提供了多個 STUN 和/或 TURN 伺服器,如果其中一個以上伺服器失敗,此錯誤可能會發生多次。提供的每個伺服器都會被嘗試,直到建立連線為止。
規範
| 規範 |
|---|
| WebRTC:瀏覽器中的即時通訊 # dom-rtcpeerconnection-onicecandidateerror |
瀏覽器相容性
載入中…