如何正确关闭 webRTC 连接,以便可以将其从 chrome://webrtc-internals 中删除

问题描述 投票:0回答:1

我有一个使用 webRTC 构建的视频通话应用程序。当用户断开通话时,通话会顺利结束,即使 connectionstatechange 变为 lined 也没关系。结束通话后,我正在运行此功能

async closeConnection() {
    if (!this.peer) return;
    if (this.peer?.onicecandidate) this.peer.removeEventListener("icecandidate",   this.peer.onicecandidate);
    if (this?.peer?.ontrack) this.peer.removeEventListener("track", this.peer.ontrack);
    if (this?.peer?.onnegotiationneeded)
      this.peer.removeEventListener("negotiationneeded", this.peer.onnegotiationneeded);
      this.peer.close();
      console.log('closing the peer connection....')
  }

但是该信息在 chrome://webrtc-internals 中仍然可见,有时浏览器会冻结并显示内存不足,这意味着可能存在内存泄漏。

chrome://webrtc-internals 中的关闭状态

可以采取什么措施来解决这个问题?

关闭 webRTC 连接后,还应从 chrome://webrtc-internals 中删除它,浏览器应释放连接期间使用的所有资源。

javascript udp webrtc videocall rtcpeerconnection
1个回答
0
投票

这是预期的,因为您仍然在

this.pc
中保留对对等连接的引用。只有通过设置
this.peer = null
释放该引用后,它才能被标记为可用于垃圾回收。

即便如此,也可能不会立即发布。

© www.soinside.com 2019 - 2024. All rights reserved.