【问题标题】:Disconnecting from a video call using react-native-webrtc使用 react-native-webrtc 断开视频通话
【发布时间】:2018-09-20 09:58:37
【问题描述】:

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

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

【问题讨论】:

    标签: ios react-native webrtc


    【解决方案1】:

    如果你想要一个真正干净的关机,我建议首先停止收发器,以便发送 RTCP BYE:

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

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

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

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

    至于为什么您无法重新开始另一个呼叫,如果不​​进一步了解您的代码如何管理这个问题,很难回答。

    【讨论】:

    • 感谢您的回答,这对您有很大帮助,不幸的是,问题出在信令服务器上,套接字正在连接和断开连接,导致视频通话挂断或重新连接需要很长时间。
    • @Jeremy,在设置超时,当我把你建议的代码,它扔给我收发器。停止不起作用。在关闭它之前需要给时间是什么意思?代码不需要放入set-time out?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多