结束通话后未删除视频元素(使用webrtc peerjs socketio的视频聊天应用程序)-无法获取peer.on(“close”,())

6rvt4ljy  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(270)

因此,我正在使用webrtc、socketio和peerjs创建一个基于web的视频聊天应用程序。但是当一个用户离开时,其余的用户仍然可以看到断开连接的用户的冻结视频元素。我怀疑这是因为peer.on(“close”,())没有被解雇。

  1. const connectToNewUser = (userId, stream) => {
  2. const call = peer.call(userId, stream) //calls new user and sends them our stream
  3. const video = document.createElement('video') //creates new video element for new user
  4. call.on('stream', userVideoStream => {
  5. addVideoStream(video, userVideoStream) //sends new user our stream
  6. })
  7. call.on('close', function(){
  8. console.log('check')
  9. video.remove();
  10. delete videoGrid[userId];
  11. })
  12. peers[userId] = call;
  13. }
  14. const addVideoStream = (video, stream) => {
  15. video.srcObject = stream
  16. video.addEventListener('loadedmetadata', () => {
  17. video.play();
  18. })
  19. videoGrid.append(video);
  20. }

我还怀疑这可能是因为我必须从视频网格中删除视频元素?但是我不知道如果我的同龄人没有被炒鱿鱼,我怎么能做到这一点。

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

另外,我在某个地方看到,我应该尝试从“用户断开连接”部分删除视频元素,但既然它不理解视频元素是什么,那该如何工作呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题