JSFiddle - React, Tailwind, and code Playground

by henbos

JavaScript

(async () => {
  const pc1 = new RTCPeerConnection();
  const pc2 = new RTCPeerConnection();
  const transceiver = pc1.addTransceiver(
  		'audio', {direction:'recvonly'});

	// No log spam because the receiver does not have a media channel yet.
  console.log(transceiver.receiver.getParameters());
  // Start negotiation. Now we get log spam because we have a media
  // channel but we do not have an SSRC.
  await pc1.setLocalDescription();
  console.log(transceiver.receiver.getParameters());

	// Complete negotiation, negotiate to receive.
  await pc2.setRemoteDescription(pc1.localDescription);
  pc2.getTransceivers()[0].direction = 'sendonly';
  await pc2.setLocalDescription();
  // This gives the receiver an SSRC.
  await pc1.setRemoteDescription(pc2.localDescription);

	// We no longer get log spam because an SSRC has been negotiated.
  console.log(transceiver.receiver.getParameters());
})();