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

浏览器兼容性

另见