Skip to content
This repository has been archived by the owner on May 13, 2024. It is now read-only.

Update app.js #20

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 57 additions & 1 deletion public/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,18 @@ async function createRoom() {

registerPeerConnectionListeners();

// Add code for creating a room here
const offer = await peerConnection.createOffer();
await peerConnection.setLocalDescription(offer);

const roomWithOffer = {
offer: {
type: offer.type,
sdp: offer.sdp
}
}
const roomRef = await db.collection('rooms').add(roomWithOffer);
const roomId = roomRef.id;
document.querySelector('#currentRoom').innerText = `Current room is ${roomId} - You are the caller!`

// Code for creating room above

Expand All @@ -46,10 +57,41 @@ async function createRoom() {
});

// Code for creating a room below

roomRef.onSnapshot(async snapshot -> {
console.log('Got updated room:', snapshot.data());
const data = snapshot.data();
if (!peerConnection.currentRemoteDescription && data.answer) {
console.log('Set remote description: ', data.answer);
const answer = new RTCSessionDescription(data.answer)
await peerConnection.setRemoteDescription(answer);
}
});

// Code for creating a room above

// Code for collecting ICE candidates below

async function collectIceCandidates(roomRef, peerConneciton,
localName, remoteName) {
const candidatesCollection = roomRef.collection(localName);

peerConnection.addEventListener('icecandidate', event -> {
if (event.candidate) {
const json = event.candidate.toJSON();
candidatesCollection.add(json);
}
});

roomRef.collection(remoteName).onSnapshot(snapshot -> {
snapshot.docChanges().forEach(change -> {
if (change.type === "added") {
const candidate = new RTCIceCandidate(change.doc.data());
peerConneciton.addIceCandidate(candidate);
}
});
})
}

// Code for collecting ICE candidates above

Expand All @@ -62,10 +104,24 @@ async function createRoom() {
});

// Listening for remote session description below

const offer = roomSnapshot.data().offer;
await peerConnection.setRemoteDescription(offer);
const answer = await peerConnection.createAnswer();
await peerConnection.setLocalDescription(answer);

const roomWithAnswer = {
answer: {
type: answer.type,
sdp: answer.sdp
}
}
await roomRef.update(roomWithAnswer);

// Listening for remote session description above

// Listen for remote ICE candidates below


// Listen for remote ICE candidates above
}
Expand Down