#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 по проводу, что делает его отличимым от сетевого сбоя.