RTCPeerConnection: icegatheringstatechange 事件

icegatheringstatechange 事件在 RTCPeerConnection 上的 ICE 候选者收集过程状态发生变化时,会发送到 onicegatheringstatechange 事件处理程序。这表示连接的 iceGatheringState 属性的值已更改。

当 ICE 首次开始收集连接候选者时,值会从 new 更改为 gathering,以指示连接候选者配置收集过程已开始。当值更改为 complete 时,构成 RTCPeerConnection 的所有传输都已完成 ICE 候选者的收集。

注意:虽然可以通过监视 icegatheringstatechange 事件并检查 iceGatheringState 的值是否变为 complete 来确定 ICE 候选者收集是否完成,但您也可以让 icecandidate 事件的处理程序查看其 candidate 属性是否为 null。这也表示候选者的收集已完成。

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

语法

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

js
addEventListener("icegatheringstatechange", (event) => {});

onicegatheringstatechange = (event) => {};

事件类型

一个通用的 Event

示例

此示例为 icegatheringstatechange 事件创建了一个处理程序。

js
pc.onicegatheringstatechange = (ev) => {
  let connection = ev.target;

  switch (connection.iceGatheringState) {
    case "gathering":
      /* collection of candidates has begun */
      break;
    case "complete":
      /* collection of candidates is finished */
      break;
  }
};

同样,您可以使用 addEventListener()icegatheringstatechange 事件添加一个监听器

js
pc.addEventListener(
  "icegatheringstatechange",
  (ev) => {
    let connection = ev.target;

    switch (connection.iceGatheringState) {
      case "gathering":
        // collection of candidates has begun
        break;
      case "complete":
        // collection of candidates is finished
        break;
    }
  },
  false,
);

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcpeerconnection-onicegatheringstatechange

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅