рдЕрднрд┐рд╡рд╛рджрди, рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ
PeerJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдбрд╛рдпрд▓рд░ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдФрд░ рдЖрдЬ рдореИрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдмрд┐рдирд╛ рджреЗрд░реА рдХрд┐рдП рд╕реАрдзреЗ рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдЖрдк рдПрдХ рдСрдирд▓рд╛рдЗрди рдЧреЗрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рддреНрд╡рд░рд┐рдд рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрджреЗрд╢ рд╢рд╛рдпрдж рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред
рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдЖрд░рдВрднреАрдХрд░рдг
рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐
рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд░рд▓
рдЪреИрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдХрдиреАрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рднреА рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдЧреЗрдо рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЖрдЗрдП рдЖрд░рдВрднрд┐рдХ рдорд╛рд░реНрдХрдЕрдк рдФрд░ рд╕рд╣рдХрд░реНрдореА рд╡рд╕реНрддреБ рдХреЗ рдЖрд░рдВрдн рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>PeerJS </title> <script src="https://unpkg.com/peerjs@1.0.0/dist/peerjs.min.js"></script> </head> <body> <h3> ID: <span id=myid ></span></h3> <input id=otherPeerId type=text placeholder="otherPeerId" ><button onclick="connectToNode(document.getElementById('otherPeerId').value)"></button> <div id=messages style="width:400px;height:60vh; background:#ADD8E6;margin:5px;"> </div><br> <textarea id=mess style="width:400px;height:15vh" ></textarea><br> <button onclick="sendMess(document.getElementById('mess'))"></button> <script> var messList=[]; function addMess(mess) { messList.push(mess); document.getElementById('messages').innerHTML=messList.join(""); } var peer=new Peer(); </script> </body>
рд╣реЗрдбрд┐рдВрдЧ рдореЗрдВ рд╣рдо PeerJS рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдХреЙрд▓ рдЖрд▓реЗрдЦ рдореЗрдВ
рд╕реВрдЪрдХ myid рдФрд░
otherPeerId рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВ
рдореЗрд╕рд┐рд╕реНрдЯрд▓рд┐рд╕реНрдЯ рд╕рд░рдгреА рдореЗрд╕реЗрдЬ рдлреАрдб рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдЧрд╛ред
AddMess рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдЧрд╛ рдФрд░ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред
рдЖрдЧреЗ рд╕рд╣рдХрд░реНрдореА рд╡рд╕реНрддреБ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдгрди
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдм рдереЛрдбрд╝рд╛ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдПрдХ рднрд╛рдЧреАрджрд╛рд░, рджреВрд╕рд░реЗ рдХреЗ рд╕рд╣рдХрд░реНрдореА рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЙрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
peer.on('connection', function(c) {
рд╕рд╣рдХрд░реНрдореА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП 'рдХрдиреЗрдХреНрд╢рди' рдШрдЯрдирд╛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рд╣реЛрддреА рд╣реИред рдФрд░
рд╕рд╣рдХрд░реНрдореА рдХрд╛
рдХрдиреЗрдХреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдРрд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдо
рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд░
рдХреЙрдирд╡реЗ рдкрд░ рд╕рд╣реЗрдЬреЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕рдорд╛рди рд╣реЛрдЧреА (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдХрд╛рдмрд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ initConn рдбрд╛рд▓рд╛ред
function initConn() { conn.on ('open', function () {
рдпрд╣рд╛рдВ рд╣рдо 2 рд╣реИрдВрдбрд▓рд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ: рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рд╣рдо рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрд╡рд╛рдж рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдЬреЛ
рд╕реЗрдВрдб рдмрдЯрди рджрдмрд╛рдХрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛, рдЬреЛ:
- рдЕрдкрдиреЗ рдлрд╝реАрдб рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
- рднрд╛рдЧреАрджрд╛рд░ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ (рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡рд┐рдзрд┐ рднреЗрдЬреЗрдВ)
- рд╕рдВрджреЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИ
function sendMess(elem) { addMess("<div><b>: </b>"+elem.value+"</div>"); conn.send(elem.value); elem.value=""; }
рдЦреЗрд▓ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди
рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЙрд╕реА рддрд░рд╣ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЦреЗрд▓ рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВред JS рдореЗрдВ, JSON.stringify рдФрд░ JSON.parse рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдмрд╕ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рдкреЗрдЯреЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ (JSON.stringify) рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ (JSON.parse) рдореЗрдВ рдмрджрд▓ рджреЗрдВред
рдЖрдорддреМрд░ рдкрд░, рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдкреГрд╖реНрда (HTML рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛) рдкрд░ рдкреВрд░реЗ рдХрдВрдЯреЗрдирд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рдмрдбрд╝рд╛ рдХрдиреЗрдХреНрд╢рди рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ рдореИрдВ рдХрд╣реВрдБрдЧрд╛: рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ 10 рдХреЗрдмреА (~ 10,000 рд╡рд░реНрдг) рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЛрдб рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдереА рдХреЛ рдПрдХ рдЖрджреЗрд╢ рднреЗрдЬреЗрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд┐рдВрджреБ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ)ред
рд╣рдо рдЗрд╕ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдирд╣реАрдВ ...
рдХрдиреЗрдХреНрд╢рди рдЯреВрдЯ рдЧрдпрд╛
рдЬреА рд╣рд╛рдВ, рдРрд╕рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЕрд╕реНрдерд┐рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реИред рдХреНрдпрд╛ рдХрднреА рдРрд╕рд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдЖрдк рд▓рдЧрднрдЧ рдЬреАрдд рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдк рдЕрдкрдиреА рд╕рд╛рд░реА рдкреНрд░рдЧрддрд┐ рдЦреЛ рдмреИрдареЗ рд╣реИрдВ? рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдПрдХ рдЧрд┐рд░реЗ рд╣реБрдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ 'рдХрд░реАрдм' рд╕рдВрднрд╛рд▓ рд▓реЗрдВрдЧреЗред рдпрд╣ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ рдЕрдЧрд░:
- рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
- рдЦрд░рд╛рдм рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдХрд╛рд░рдг рдХрдиреЗрдХреНрд╢рди рдЦреЛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рд╕рд╛рдереА рдиреЗ рдХреЗрд╡рд▓ рдЯреИрдм рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдерд╛
conn.on('close',function() { setTimeout(function() { if(conn.partnerPeer) { var pp=conn.partnerPeer; conn = peer.connect(conn.partnerPeer); conn.partnerPeer=pp; initConn(); } else conn=null; } ,2000); addMess('----------- -------------'); });
рдпрд╣рд╛рдВ, рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж 2 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде, рд╣рдо рдмрд╕ рдПрдХ рдирдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреЙрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рд╛рдереАрдкреЗрдпрд░ рдХреЗрд╡рд▓ рдЙрд╕ рд╕рд╛рдереА рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХреЗ 2 рдкрдХреНрд╖реЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЗрд╕реЗ рддреЛрдбрд╝рдиреЗ рдкрд░ рдЗрд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред
рдФрд░ рдЕрдм рдкреВрд░рд╛ рдХреЛрдб:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>PeerJS </title> <script src="https://unpkg.com/peerjs@1.0.0/dist/peerjs.min.js"></script> </head> <body> <h3> ID: <span id=myid ></span></h3> <input id=otherPeerId type=text placeholder="otherPeerId" ><button onclick="connectToNode(document.getElementById('otherPeerId').value)"></button> <div id=messages style="width:400px;height:60vh; background:#ADD8E6;margin:5px;"> </div><br> <textarea id=mess style="width:400px;height:15vh" ></textarea><br> <button onclick="sendMess(document.getElementById('mess'))"></button> <script> var messList=[]; function addMess(mess) { messList.push(mess); document.getElementById('messages').innerHTML=messList.join(""); } var peer=new Peer(); var conn; //, peer.on('open', function(peerID) { document.getElementById('myid').innerHTML=peerID; }); peer.on('connection', function(c) { // ... conn=c; initConn(); }); function connectToNode(partnerPeer) { // ... conn = peer.connect(partnerPeer); initConn(); } function initConn() { conn.on ('open', function () { // addMess("<div><h4> </h4></div>"); conn.on ('data', function (data) { // addMess("<div><b>: </b>"+data+"</div>"); }); }); conn.on('close',function() {addMess('----------- -------------');}); } function sendMess(elem) { addMess("<div><b>: </b>"+elem.value+"</div>"); conn.send(elem.value); elem.value=""; } </script> </body>