RTCIceTransport: gatheringstatechange 事件

Baseline 2024
新推出

自 ⁨2024 年 4 月⁩ 起,此功能可在最新的设备和浏览器版本中运行。此功能可能不适用于较旧的设备或浏览器。

gatheringstatechange 事件发送给 RTCIceTransport 时,它的 ICE 候选收集状态发生变化。

收集状态(其实际状态可在传输对象的 gatheringState 属性中找到)表示 ICE 代理是否已开始在此传输上收集候选,如果是,是否已完成收集。

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

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

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

ongatheringstatechange = (event) => { }

事件类型

一个通用的 Event

示例

此示例在与给定 RTCPeerConnection 关联的每个 RTCRtpSender 上为 gatheringstatechange 事件创建了一个处理程序。在这里,调用 addEventListener() 方法来添加 gatheringstatechange 事件的监听器。

js
pc.getSenders().forEach((sender) => {
  sender.transport.iceTransport.addEventListener(
    "gatheringstatechange",
    (ev) => {
      let transport = ev.target;

      if (transport.gatheringState === "complete") {
        /* this transport has finished gathering candidates,
        but others may still be working on it */
      }
    },
  );
});

同样,您也可以使用 ongatheringstatechange 事件处理程序属性。

js
pc.getSenders().forEach((sender) => {
  sender.transport.iceTransport.ongatheringstatechange = (ev) => {
    let transport = ev.target;

    if (transport.gatheringState === "complete") {
      /* this transport has finished gathering candidates,
         but others may still be working on it */
    }
  };
});

规范

规范
WebRTC:浏览器中的实时通信
# event-icetransport-gatheringstatechange
WebRTC:浏览器中的实时通信
# dom-rtcicetransport-ongatheringstatechange

浏览器兼容性

另见