使用react-native-webrtc断开视频通话

时间:2018-09-20 09:58:38

标签: ios react-native webrtc

我已经使用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)
  }
}

我认为我没有正确断开视频通话。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

pc.getTransceivers().forEach((transceiver) => {
    transceiver.stop();
});

这应该彻底停止远程方收到的媒体轨道:

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

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

关于为什么无法重新启动另一个呼叫,如果不​​进一步了解您的代码如何管理它,很难回答。