var peer = new Peer(); peer.on('open', function(id) { document.getElementById("id").innerHTML=id }); setTimeout(() => { document.getElementById("connectToPeerID").value = "" }, 1); function connect(){ peerID=document.getElementById("connectToPeerID").value var conn = peer.connect(peerID) console.log("Initiated connection to: "+peerID) peerlist[conn.peer]=conn conn.on('open', function() { // Receive messages conn.on('data', function(data) { handleData(conn,data, "My Connection") }) }) } // mediaStream = navigator.mediaDevices.getUserMedia({ audio: true, video: false }) peerlist={} function handleData(conn,data, who){ if (document.getElementById("preChat").style.visibility != "hidden"){ document.getElementById("preChat").style.visibility="hidden" document.getElementById("preChat").style.height=0 document.getElementById("connectButton").style.height=0 document.getElementById("chatWrapper").style.visibility="visible" } if (typeof data == "object" && data.peerID != document.getElementById("id").innerHTML && typeof peerlist[data.peerID] == "undefined"){ var conn = peer.connect(data.peerID) peerlist[conn.peer]=conn conn.on('open', function() { // Receive messages conn.on('data', function(data) { handleData(conn,data, "My Connection") }) }) } else if (typeof data == "object" && data.peerID == document.getElementById("id").innerHTML) { // do nothing } else if (typeof peerlist[data.peerID] != "undefined") { // do nothing } else { chat(data, conn.peer) } } function makeNoise(){ message=document.getElementById("chatSend").value document.getElementById("chatSend").value = "" Object.keys(peerlist).forEach(element => { peerlist[element].send(message) }) chat(message, document.getElementById("id").innerHTML) message="" } function startCall(){ alert("No") } setInterval(() => { // We can make this nicer by sending the last contact everything and every contact our most recent, but not sending everything to everyone except periodically, like once a minute Object.keys(peerlist).forEach(contact => { Object.keys(peerlist).forEach(peerDetail => { peerlist[contact].send({peerID: peerDetail}) }) }) }, 5000);