微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结束通话后未删除视频元素使用 Webrtc PeerJS SocketIO 的视频聊天应用程序 - 无法获取 peer.on("close", ())

如何解决结束通话后未删除视频元素使用 Webrtc PeerJS SocketIO 的视频聊天应用程序 - 无法获取 peer.on("close", ())

所以我正在使用 WebRTC、SocketIO 和 PeerJS 创建一个基于网络的视频聊天应用程序。但是当一个用户离开时,其余用户仍然可以看到断线用户的冻结视频元素。我怀疑这是因为 peer.on("close",()) 没有被解雇。

const connectToNewUser = (userId,stream) => {
  const call = peer.call(userId,stream) //calls new user and sends them our stream
  const video = document.createElement('video') //creates new video element for new user
  call.on('stream',userVideoStream => {
      addVideoStream(video,userVideoStream) //sends new user our stream
  })
  call.on('close',function(){
    console.log('check')
    video.remove();
    delete videoGrid[userId];
  })
  peers[userId] = call;
}


const addVideoStream = (video,stream) => {
  video.srcObject = stream
  video.addEventListener('loadedMetadata',() => {
      video.play();
  })
  videoGrid.append(video);
}

我也怀疑这可能是因为我必须从视频网格中删除视频元素?但是我不确定如果我的 peer.on("close",()) 没有被解雇,我该怎么做。

socket.on("user-disconnected",(userId) => {
  //message in chat saying x user disconnected 
  console.log("New User disconnected");
  if (peers[userId]) peers[userId].close();
});

我还看到某处我应该尝试从“用户断开连接”部分中删除视频元素,但是由于它不了解视频元素是什么,这将如何工作?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。