событие удаленного ухода пользователя не работает в webrtc video

#webrtc

#webrtc

Вопрос:

Я хочу получать уведомления, когда пользователь покидает комнату или закрывает браузер, тогда я должен получить это уведомление для этого я попробовал эту функцию 2, но это не работает

     pc.removestream= (event) => {
                    console.log("user removed");
                  }
stream.onremovetrack = ({track}) => {
                        console.log(`${track.kind} track was removed.`);
                        if (!stream.getTracks().length) {
                          console.log(`stream ${stream.id} emptied (effectively removed).`);
                        }
                    };
 

здесь я разместил весь свой код для webrtc, может кто-нибудь, пожалуйста, проверить мой код и помочь мне решить эту проблему?

 pc.ontrack = ({track, streams: [stream]}) => {  


                    stream.onremovetrack = ({track}) => {
                        console.log(`${track.kind} track was removed.`);
                        if (!stream.getTracks().length) {
                          console.log(`stream ${stream.id} emptied (effectively removed).`);
                        }
                    };
                    remoteVideo1.srcObject = stream;  
              };

              pc.removestream= (event) => {
                console.log("user removed");
              }
 

Ответ №1:

Пользователь, закрывающий свой браузер, эквивалентен pc.close() , а не удалению какого-либо потока или дорожек.

Лучший способ обнаружить это — создать канал передачи данных и проверить его закрытое состояние (скрипка):

 const dc = pc.createDataChannel("", {negotiated: true, id: 0});
...
dc.onclose = () => console.log("user left");
 

В этом случае удаленный браузер отправляет фрагмент прерывания SCTP по проводу, что делает его отличимым от сетевого сбоя.