Compare commits

..

No commits in common. "2cae020fbcdb58be46dc3bf787a88ebea46db2d2" and "c7bcf8e2ddf8854192ecb71989e478544b8d891f" have entirely different histories.

View File

@ -204,15 +204,6 @@ form label {
var pc = undefined; var pc = undefined;
var dc = undefined; var dc = undefined;
function sendOffer() {
if (pc.iceGatheringState == "complete") {
sendJson({
description: pc.localDescription
});
}
}
function createRTCPeerConnection() { function createRTCPeerConnection() {
const pc = new RTCPeerConnection(); const pc = new RTCPeerConnection();
log("Created RTCPeerConnection."); log("Created RTCPeerConnection.");
@ -223,17 +214,19 @@ form label {
pc.oniceconnectionstatechange = e => { pc.oniceconnectionstatechange = e => {
log("pc.oniceconnectionstatechange: " + pc.iceConnectionState); log("pc.oniceconnectionstatechange: " + pc.iceConnectionState);
} }
pc.onicegatheringstatechange = async function(e) { pc.onicegatheringstatechange = e => {
log("pc.onicegatheringstatechange: " + pc.iceGatheringState); log("pc.onicegatheringstatechange: " + pc.iceGatheringState);
sendOffer();
} }
pc.onicecandidate = ({candidate}) => sendJson({candidate});
// let the "negotiationneeded" event trigger offer generation // let the "negotiationneeded" event trigger offer generation
// ... but only once icegathering is complete.
pc.onnegotiationneeded = async function () { pc.onnegotiationneeded = async function () {
log("In pc.onnegotiationneeded..."); log("In pc.onnegotiationneeded...");
await pc.setLocalDescription(await pc.createOffer()); await pc.setLocalDescription(await pc.createOffer());
sendOffer(); sendJson({
description: pc.localDescription
});
} }
pc.ontrack = ({streams: [stream]}) => { pc.ontrack = ({streams: [stream]}) => {
@ -269,7 +262,7 @@ form label {
log("Data channel open, sending settings...") log("Data channel open, sending settings...")
settings = readSettingsForm(true); settings = readSettingsForm(true);
sendJson({settings}); sendJson({settings});
startStreamingWithErorrHandling(false); startStartingWithErorrHandling(false);
} }
} }
@ -328,7 +321,7 @@ form label {
pc.addTrack(track, stream); pc.addTrack(track, stream);
} }
} }
function startStreamingWithErorrHandling(fromButton) { function startStartingWithErorrHandling(fromButton) {
startStreaming(fromButton) startStreaming(fromButton)
.then(() => { .then(() => {
log("startStreaming() finished."); log("startStreaming() finished.");
@ -339,7 +332,7 @@ form label {
} }
start.addEventListener("click", _ => { start.addEventListener("click", _ => {
startStreamingWithErorrHandling(true) startStartingWithErorrHandling(true)
}); });
async function receiveMessage(e) { async function receiveMessage(e) {
@ -350,17 +343,26 @@ form label {
if (data.ready) { if (data.ready) {
// Ready message means client is open and ready for connection. // Ready message means client is open and ready for connection.
pc = createRTCPeerConnection(); pc = createRTCPeerConnection();
} else if (data.requestSettings) {
settings = readSettingsForm(true);
startStartingWithErorrHandling(false);
} else if (data.settings) { } else if (data.settings) {
settings = data.settings; settings = data.settings;
startStreamingWithErorrHandling(false); startStartingWithErorrHandling(false);
} else if (data.description) { } else if (data.description) {
if (pc == undefined) pc = createRTCPeerConnection(); if (pc == undefined) pc = createRTCPeerConnection();
await pc.setRemoteDescription(data.description); await pc.setRemoteDescription(data.description);
if (data.description.type == "offer") { if (data.description.type == "offer") {
log("Got an offer..."); log("Got an offer...");
await pc.setLocalDescription(await pc.createAnswer()); await pc.setLocalDescription(await pc.createAnswer());
sendOffer(); sendJson({
description: pc.localDescription
});
} }
} else if (data.candidate) {
if (pc == undefined) pc = createRTCPeerConnection();
log("Adding ice candidate...");
await pc.addIceCandidate(data.candidate);
} }
}; };