RTCIceTransport: selectedcandidatepairchange 事件
当 RTCIceTransport
的 ICE 代理选择一对新的候选者来描述可行连接的端点时,会向该 RTCIceTransport
发送一个 selectedcandidatepairchange
事件。
候选者对由一个 RTCIceCandidatePair
对象描述,该对象包含一个 RTCIceCandidate
,代表连接的本地端点,另一个代表连接的远程端点。
这些候选者可以一起用于建立连接,供 RTCIceTransport
使用,并扩展到 RTCPeerConnection
。
此事件不可取消,也不会冒泡。
语法
在诸如 addEventListener()
之类的方法中使用事件名称,或设置事件处理程序属性。
js
addEventListener("selectedcandidatepairchange", (event) => {});
onselectedcandidatepairchange = (event) => {};
事件类型
一个通用的 Event
。
示例
此示例为 selectedcandidatepairchange
创建一个事件处理程序,该处理程序更新显示,为用户提供有关名为 pc
的 RTCPeerConnection
的 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 表格仅在浏览器中加载