RTCIceTransport: selectedcandidatepairchange 事件

RTCIceTransportICE 代理选择一对新的候选者来描述可行连接的端点时,会向该 RTCIceTransport 发送一个 selectedcandidatepairchange 事件。

候选者对由一个 RTCIceCandidatePair 对象描述,该对象包含一个 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();
  },
  false,
);

也可以通过直接设置 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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参见