document.addEventListener('DOMContentLoaded', function() { var serv = pc = null, url = 'ws://'+location.host; navigator.mozGetUserMedia( {video:true, audio:true}, function(stream) { connectStream(stream, "#local"); var channel = new WebSocket(url, 'webrtc'); channel.onopen = function() { pc = new mozRTCPeerConnection(serv); pc.addStream(stream); pc.onicecandidate = onice(pc); pc.onaddstream = onadd(); pc.createOffer(desc(pc, channel, "offer")); }; channel.onmessage = function(msg) { var sig = JSON.parse(msg.data); switch(sig.command) { case "offer": pc = new mozRTCPeerConnection(serv); pc.addStream(stream); pc.setRemoteDescription(new mozRTCSessionDescription(sig.data)); pc.onicecandidate = onice(pc); pc.onaddstream = onadd(); pc.createAnswer(desc(pc, channel, "answer")); break; case "answer": pc.setRemoteDescription(new mozRTCSessionDescription(sig.data)); break; case "ice": pc.addIceCandidate(new mozRTCIceCandidate(sig.data)); break; } }; }, error ); });