RTCPeerConnection: connectionstatechange 事件

Baseline 2023
新推出

自 ⁨2023 年 5 月⁩起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在旧版设备或浏览器上使用。

RTCRtpReceiver(属于连接的一部分)中添加了新的音轨后,就会向 RTCPeerConnection 对象上的 onconnectionstatechange 事件处理程序发送 connectionstatechange 事件。新的连接状态可以在 connectionState 中找到,它是一个字符串值,可能是:newconnectingconnecteddisconnectedfailedclosed

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

语法

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

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

onconnectionstatechange = (event) => { }

事件类型

一个通用的 Event

示例

对于名为 peerConnectionRTCPeerConnection,此示例使用 addEventListener() 来处理 WebRTC 会话连接性的变化。它调用一个应用程序定义的函数 setOnlineStatus() 来更新状态显示。

js
peerConnection.addEventListener("connectionstatechange", (event) => {
  switch (peerConnection.connectionState) {
    case "new":
    case "connecting":
      setOnlineStatus("Connecting…");
      break;
    case "connected":
      setOnlineStatus("Online");
      break;
    case "disconnected":
      setOnlineStatus("Disconnecting…");
      break;
    case "closed":
      setOnlineStatus("Offline");
      break;
    case "failed":
      setOnlineStatus("Error");
      break;
    default:
      setOnlineStatus("Unknown");
      break;
  }
});

您也可以使用 RTCPeerConnection.onconnectionstatechange 属性来创建 connectionstatechange 事件的事件处理程序。

js
peerConnection.onconnectionstatechange = (ev) => {
  switch (peerConnection.connectionState) {
    case "new":
    case "connecting":
      setOnlineStatus("Connecting…");
      break;
    // …
    default:
      setOnlineStatus("Unknown");
      break;
  }
};

规范

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

浏览器兼容性

另见