Minimal WebRTC tab demo

Simple WebRTC test in two tabs

by jib1

HTML

<button id="connect">Connect!</button><br>
<video id="video" width="320" height="240" autoplay></video>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<script src="https://rawgit.com/jan-ivar/localSocket/master/localSocket.js"></script>

JavaScript

var pc = new RTCPeerConnection();

connect.onclick = e => navigator.mediaDevices.getUserMedia({video: true})
  .then(stream => pc.addStream(video.srcObject = stream));

pc.ontrack = e => video.srcObject = e.streams[0];

var sc = new localSocket();
pc.onicecandidate = e => sc.send({ice: e.candidate});
pc.onnegotiationneeded = e => pc.createOffer()
  .then(sdp => pc.setLocalDescription(sdp).then(() => sc.send({sdp})));

sc.onmessage = e => e.data.sdp && pc.setRemoteDescription(e.data.sdp)
  .then(() => pc.signalingState == "stable" || pc.createAnswer()
    .then(sdp => pc.setLocalDescription(sdp).then(() => sc.send({sdp})))) ||
   e.data.ice && pc.addIceCandidate(e.data.ice);