/* eslint-env browser */ let pc = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] }) var log = msg => { document.getElementById('logs').innerHTML += msg + '
' } navigator.mediaDevices.getUserMedia({ video: true, audio: true }) .then(stream => { document.getElementById('video1').srcObject = stream stream.getTracks().forEach(track => pc.addTrack(track, stream)); pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log) }).catch(log) pc.oniceconnectionstatechange = e => log(pc.iceConnectionState) pc.onicecandidate = event => { if (event.candidate === null) { document.getElementById('localSessionDescription').value = btoa(JSON.stringify(pc.localDescription)) } } window.startSession = () => { let sd = document.getElementById('remoteSessionDescription').value if (sd === '') { return alert('Session Description must not be empty') } try { pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(atob(sd)))) } catch (e) { alert(e) } }