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