你想在哪个事件上摧毁它?您的代码中可能有一个缺失的部分使连接在此处打开,这是一本完整的 PDF 书,解释了 WebRtc 如何在浏览器上工作,
点击这里来下载它
我把这本书给你,这样你就可以检查你的代码中是否有任何部分使连接在这种情况下处于打开状态,即使你在特定事件上关闭了对等点,它仍然会显示并保留在浏览器上。
至于您的问题,假设您想通过单击按钮将其关闭,我们称之为挂断按钮,//挂断
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 上也存在错误,它会导致内存泄漏,不确定此错误是否仍然存在。
用户退出时的另一件事,例如关闭浏览器窗口,如果我们仍处于“offer”、“answer”或“candidate”状态,这可能会有所帮助
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");
});