RTCIceTransport: selectedcandidatepairchange 事件

可用性有限

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

ICE 代理選擇一對描述連線終端的新候選項時,會向 RTCIceTransport 傳送一個 selectedcandidatepairchange 事件。

這對候選項又由一個 RTCIceCandidatePair 物件描述,該物件包含一個表示連線本地端的 RTCIceCandidate,以及另一個表示連線遠端端的 RTCIceCandidate

這些候選項可以結合使用,由 RTCIceTransport 建立連線,進而由 RTCPeerConnection 使用。

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

語法

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

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

onselectedcandidatepairchange = (event) => { }

事件型別

一個通用的 Event

示例

此示例為 selectedcandidatepairchange 建立了一個事件處理程式,該處理程式會更新一個顯示,向用戶提供有關名為 pcRTCPeerConnection 的 ICE 協商進度的資訊。

js
let iceTransport = pc.getSenders()[0].transport.iceTransport;
let localProtoElem = document.getElementById("local-protocol");
let remoteProtoElem = document.getElementById("remote-protocol");

iceTransport.addEventListener("selectedcandidatepairchange", (ev) => {
  let pair = iceTransport.getSelectedCandidatePair();
  localProtoElem.innerText = pair.local.protocol.toUpperCase();
  remoteProtoElem.innerText = pair.remote.protocol.toUpperCase();
});

也可以透過直接設定 onselectedcandidatepairchange 事件處理程式屬性來完成此操作。

js
let iceTransport = pc.getSenders()[0].transport.iceTransport;
let localProtoElem = document.getElementById("local-protocol");
let remoteProtoElem = document.getElementById("remote-protocol");

iceTransport.onselectedcandidatepairchange = (ev) => {
  let pair = iceTransport.getSelectedCandidatePair();
  localProtoElem.innerText = pair.local.protocol.toUpperCase();
  remoteProtoElem.innerText = pair.remote.protocol.toUpperCase();
};

規範

規範
WebRTC:瀏覽器中的即時通訊
# event-icetransport-selectedcandidatepairchange
WebRTC:瀏覽器中的即時通訊
# dom-rtcicetransport-onselectedcandidatepairchange

瀏覽器相容性

另見