на каком событии вы хотите его уничтожить?возможно, в вашем коде отсутствует часть, которая оставляет соединение открытым, вот целая книга в формате PDF, объясняющая, как WebRtc работает в браузерах,
нажмите здесь, чтобы загрузить ее
iЯ даю вам эту книгу, чтобы вы могли проверить, есть ли какие-то части вашего кода, которые оставляют соединение открытым, где-то в этом случае, даже если вы закрыли одноранговый узел для этого конкретного события, оно все равно будет отображаться и оставаться в браузере.
Что касается вашего вопроса, предположим, что вы хотите закрыть его нажатием кнопки, давайте назовем его кнопкой Отбой, // повесим трубку
hangUpBtn.addEventListener("click", function () {
send({
type: "leave"
});
handleLeave();
});
function handleLeave() {
connectedUser = null;
remoteVideo.src = null;
yourConn.close();
yourConn.onicecandidate = null;
yourConn.onaddstream = null;
};
Когда пользователь отключается, вы должны очистить егоподключение.Вы можете удалить пользователя при срабатывании события закрытия.Добавьте следующий код в обработчик соединения
connection.on("close", function() {
if(connection.name) {
delete users[connection.name];
}
});
, когда пользователь нажмет на кнопку зависания. Он отправит другому пользователю сообщение о выходе. Он закроет RTCPeerConnection и локально уничтожит соединение
это должно закрыть соединение rtc, насколько я помню, есть ошибка в chrome, даже если вы закрыли соединение, это приведет к утечке памяти, не уверенной, если эта ошибка все еще существует.
еще одна вещь, когда пользователь выходит, например, закрывает окно браузера, это может помочь, если мы все еще в состоянии «предложение», «ответ» или «кандидат»
connection.on("close", function() {
if(connection.name) {
delete users[connection.name];
if(connection.otherName) {
console.log("Disconnecting from ", connection.otherName);
var conn = users[connection.otherName];
conn.otherName = null;
if(conn != null) {
sendTo(conn, {
type: "leave"
});
}
}
}
});
connection.send("Hello world");
});