Отключение от видеозвонка с использованием response-native-webrtc - PullRequest
0 голосов
/ 20 сентября 2018

Я реализовал видеозвонки на основе WebRTC с использованием response-native-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 голосов
/ 25 сентября 2018

Если вы хотите по-настоящему чистое отключение, я бы предложил сначала остановить трансиверы, чтобы послать RTCP BYE:

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

Это должно полностью остановить полученную дорожку мультимедиа удаленной стороны:

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

ПРИМЕЧАНИЕ: вам может потребоваться дать RTCPeerConnection немного времени перед его закрытием, чтобы у этого BYE было время для фактической отправки (попробуйте setTimeout).

Какпочему вы не можете перезапустить другой вызов, трудно ответить без дальнейшего понимания того, как ваш код управляет этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...