这是一个一对一的呼叫,工作正常,但当我断开呼叫并尝试重新连接时,重新连接会花费很多时间,有时会挂起应用程序。下面是断开连接的代码:
function stopLocalStream() {
if (friends != null) {
friends.forEach(friend => {
leave(friend.socketId)
})
}
if (localStream != null) {
localStream.getTracks().forEach(t => t.stop())
localStream.release()
localStream = null
}
}
function leave(socketId) {
console.log('leave', socketId)
var pc = peerConnections[socketId]
if (pc) {
pc.close()
}
delete peerConnections[socketId]
if (onFriendLeftCallback != null) {
onFriendLeftCallback(socketId)
}
}我想我没有正确断开视频通话。任何帮助都将非常感谢谢谢。
发布于 2018-09-25 15:47:41
如果你想要一个真正干净的关机,我建议首先停止收发器,这样RTCP BYE就会被发送:
pc.getTransceivers().forEach((transceiver) => {
transceiver.stop();
});这应该会干净利落地停止远程方接收的媒体轨道:
https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/stop
注意:您可能需要在关闭RTCPeerConnection之前给它一点时间,以便这个BYE有时间实际发送(尝试setTimeout)。
至于为什么无法重新启动另一个调用,如果不进一步了解代码是如何管理的,就很难回答这个问题。
https://stackoverflow.com/questions/52422423
复制相似问题