Compare commits

...

3 Commits

View File

@ -373,7 +373,10 @@ form label {
// ... but only once icegathering is complete.
pc.onnegotiationneeded = async function () {
log("In pc.onnegotiationneeded...");
await pc.setLocalDescription(await pc.createOffer());
const useOffer = (!settings || !('separateIce' in settings)
|| !settings.separateIce);
await pc.setLocalDescription(
await (useOffer ? pc.createOffer() : pc.createAnswer()));
sendOffer();
}
@ -450,7 +453,7 @@ form label {
: videoSettings == 'true'
? true
: { advanced: [{facingMode: videoSettings}] };
log("Created videoConstraints.");
log("Created videoConstraints: " + JSON.stringify(videoConstraints));
if (!videoConstraints && !audioSettings) return;
const stream = videoSettings == 'screen'
@ -471,8 +474,13 @@ form label {
log("Added track.");
pc.addTrack(track, stream);
}
log('End of startStreaming(), creating answer...');
if (settings && 'separateIce' in settings && settings.separateIce) {
await pc.setLocalDescription(await pc.createAnswer());
}
}
function startStreamingWithErorrHandling(fromButton) {
try {
startStreaming(fromButton)
.then(() => {
log("startStreaming() finished.");
@ -480,6 +488,9 @@ form label {
.catch(e => {
log("startStreaming() errored: " + e.message);
});
} catch (e) {
log("Error in startStreaming(): " + e);
}
}
start.addEventListener("click", _ => {
@ -498,12 +509,20 @@ form label {
settings = data.settings;
startStreamingWithErorrHandling(false);
} else if (data.description) {
try {
if (pc == undefined) pc = createRTCPeerConnection();
await pc.setRemoteDescription(data.description);
if (data.description.type == "offer") {
log("Got an offer...");
if (!settings || !('separateIce' in settings) || !settings.separateIce) {
await pc.setLocalDescription(await pc.createAnswer());
sendOffer();
} else {
log("separateIce mode, so delaying answer.");
}
}
} catch (e) {
log("Error accepting remote offer/answer: " + e);
}
}
};