Firebase - проблема с просмотром видео другого человека response-native-webrtc - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь заставить Video Call работать между двумя пользователями, но это не мешает, скажем, если пользователь A выполняет вызов, а пользователь B присоединяется к нему. Пользователь A получает видео пользователя B, но пользователь B не показывает видео пользователя A. Я пытался решить эту проблему, но не смог сделать это здесь. Мой код вызова для присоединения

    joinCall = async (id = roomId) => {
        const roomRef = await firebase.firestore().collection('rooms').doc(id);
        const roomSnapshot = await roomRef.get();
        if (roomSnapshot.exists) {
          let localPC = new RTCPeerConnection(configuration);
          const calleeCandidatesCollection = roomRef.collection('calleeCandidates');
          localPC.onicecandidate = e => {
            if (!e.candidate) {
              console.log('Got final candidate!');
              return;
            }
            calleeCandidatesCollection.add(e.candidate.toJSON());
          };

          const offer = roomSnapshot.data().offer;
          console.log("Offer",offer)
          await localPC.setRemoteDescription(new RTCSessionDescription(offer));
          localPC.addStream(this.state.localStream);  
          const answer = await localPC.createAnswer();
          await localPC.setLocalDescription(answer);
          const roomWithAnswer = { answer };
          await roomRef.update(roomWithAnswer);
          roomRef.collection('callerCandidates').onSnapshot(snapshot => {

            console.log("Snashot",snapshot)
            snapshot.docChanges.forEach(async change => {
              if (change.type === 'added') {
                let data = change.doc.data();
                console.log('data caller',data);
                await localPC.addIceCandidate(new RTCIceCandidate(data));
                   }

            });

          });

  localPC.onaddstream = e => {
        debugger
        if (e.stream && this.state.remoteStream !== e.stream) {
          console.log('RemotePC received the stream join', e.stream);
          // setRemoteStream(e.stream);
          this.setState({remoteStream : e.stream})
        }
      };
        this.setState({cachedLocalPC : localPC})
        }
      };

Ваша помощь будет оценена.

...