使用react-native-webrtc断开与视频通话的连接

Hai*_*Ali 6 ios webrtc react-native

我使用react-native-webrtc实现了基于WebRTC的视频通话.它是一对一的呼叫并且工作正常,但是当我断开呼叫并尝试再次重新连接时,重新连接需要花费大量时间并且有时会挂起应用程序.以下是断开连接的代码:

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)
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为我没有正确断开视频通话.任何帮助将非常感谢谢谢.

Jer*_*emy 3

如果您想要真正彻底的关闭,我建议首先停止收发器,以便发送 RTCP BYE:

pc.getTransceivers().forEach((transceiver) => {
    transceiver.stop();
});
Run Code Online (Sandbox Code Playgroud)

这应该完全停止远程方接收的媒体轨道:

https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/stop

注意:您可能需要在关闭 RTCPeerConnection 之前给它一点时间,以便 BYE 有时间实际发送(尝试 a setTimeout)。

至于为什么无法重新启动另一个调用,如果不进一步了解代码如何管理此问题,则很难回答。