RTCPeerConnection: connectionstatechange 事件

**connectionstatechange** 事件在将新的轨道添加到连接的一部分的 RTCRtpReceiver 之后,发送到 RTCPeerConnection 对象上的 onconnectionstatechange 事件处理程序。新的连接状态可以在 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;
    }
  },
  false,
);

您还可以使用 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

浏览器兼容性

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

另请参阅