RTCPeerConnection:icecandidateerror 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

當透過 STUNTURN 伺服器進行 ICE 協商時發生錯誤,則會向 RTCPeerConnection 傳送 WebRTC APIicecandidateerror 事件。該事件物件型別為 RTCPeerConnectionIceErrorEvent,幷包含一些詳細描述錯誤的信心。

此事件不可取消,也不會冒泡。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("icecandidateerror", (event) => { })

onicecandidateerror = (event) => { }

事件型別

一個 RTCPeerConnectionIceErrorEvent。繼承自 Event

Event RTCPeerConnectionIceErrorEvent

事件屬性

RTCPeerConnectionIceErrorEvent 介面包含 Event 介面中的屬性,以及以下屬性:

address 只讀

一個字串,提供用於與用於協商連線的 STUNTURN 伺服器通訊的本地 IP 地址。如果本地 IP 地址尚未作為本地 ICE 候選的一部分公開,則為 null

errorCode 只讀

一個無符號整數值,表示 STUN 或 TURN 伺服器返回的 STUN 錯誤程式碼。如果無法到達任何主機候選伺服器,則此屬性設定為數字 701,該數字超出有效 STUN 錯誤程式碼的範圍。701 錯誤每個伺服器 URL 只觸發一次,並且僅在 iceGatheringStategathering 時觸發。

errorText 只讀

一個字串,包含 STUN 或 TURN 伺服器返回的 STUN 原因文字。如果根本無法與 STUN 或 TURN 伺服器建立通訊,則此字串將是瀏覽器特定的錯誤說明字串。

port 只讀

一個無符號整數值,表示透過 address 中提供的 IP 地址與 STUN 或 TURN 伺服器通訊的埠號。如果連線尚未建立(即,如果 addressnull),則為 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() 的函式,以記錄或輸出連線失敗。

js
pc.addEventListener("icecandidateerror", (event) => {
  if (event.errorCode === 701) {
    reportConnectFail(event.url, event.errorText);
  }
});

請注意,如果建立連線時提供了多個 STUN 和/或 TURN 伺服器,如果其中一個以上伺服器失敗,此錯誤可能會發生多次。提供的每個伺服器都會被嘗試,直到建立連線為止。

規範

規範
WebRTC:瀏覽器中的即時通訊
# dom-rtcpeerconnection-onicecandidateerror

瀏覽器相容性