JSFiddle - React, Tailwind, and code Playground
by mickel8
JavaScript
async function run() {
pc1 = new RTCPeerConnection();
pc2 = new RTCPeerConnection();
tr1 = pc1.addTransceiver("audio");
tr2 = pc1.addTransceiver("video");
offer = await pc1.createOffer();
await pc1.setLocalDescription(offer);
await pc2.setRemoteDescription(offer);
answer = await pc2.createAnswer();
await pc2.setLocalDescription(answer);
await pc1.setRemoteDescription(answer);
tr1.stop();
tr2.stop();
offer = await pc1.createOffer();
await pc1.setLocalDescription(offer);
await pc2.setRemoteDescription(offer);
answer = await pc2.createAnswer();
await pc2.setLocalDescription(answer);
await pc1.setRemoteDescription(answer);
// negotiate once again even though negotiation is not needed
offer = await pc1.createOffer();
await pc1.setLocalDescription(offer);
// observe that after setting remote offer with unused m-lines,
// stopped transceivers are created...
await pc2.setRemoteDescription(offer);
console.log(pc2.getTransceivers());
answer = await pc2.createAnswer();
// ...and removed
await pc2.setLocalDescription(answer);
console.log(pc2.getTransceivers());
await pc1.setRemoteDescription(answer);
};
run();