Я пытаюсь заставить 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})
}
};
Ваша помощь будет оценена.