PeerJS: WebRTC peer-to-peer data, video, and audio calls
PeerJS - Simple peer-to-peer with WebRTC
 The PeerJS library PeerJS simplifies WebRTC peer-to-peer data, video, and audio calls.  PeerJS wraps the browser's WebRTC implementation to provide a complete, configurable, and easy-to-use peer-to-peer connection API. Equipped with nothing but an ID, a peer can create a P2P data or media stream connection to a remote peer. Downloads  Setup Include the library with a script tag <script src="https://unpkg.com/peerjs@1.5.4/dist/peerjs.min.js"></script>
 Or use ESM <script type="module">
  import {Peer} from "https://esm.sh/peerjs@1.5.4?bundle-deps"
</script>
 Create a peer var peer = new Peer();
 Data connections Connect var conn = peer.connect('another-peers-id');
// on open will be launch when you successfully connect to PeerServer
conn.on('open', function(){
  // here you have conn.id
  conn.send('hi!');
});
 Receive peer.on('connection', function(conn) {
  conn.on('data', function(data){
    // Will print 'hi!'
    console.log(data);
  });
});
 Media calls Call var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
getUserMedia({video: true, audio: true}, function(stream) {
  var call = peer.call('another-peers-id', stream);
  call.on('stream', function(remoteStream) {
    // Show stream in some video/canvas element.
  });
}, function(err) {
  console.log('Failed to get local stream' ,err);
});
 Answer var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
peer.on('call', function(call) {
  getUserMedia({video: true, audio: true}, function(stream) {
    call.answer(stream); // Answer the call with an A/V stream.
    call.on('stream', function(remoteStream) {
      // Show stream in some video/canvas element.
    });
  }, function(err) {
    console.log('Failed to get local stream' ,err);
  });
});
 PeerServer To broker connections, PeerJS connects to a PeerServer. Note that no peer-to-peer data goes through the server; The server acts only as a connection broker.  PeerServer Cloud If you don't want to run your own PeerServer, we offer a free cloud-hosted version of PeerServer. Official PeerServer!   Run your own  PeerServer is open source  and is written in node.js. You can easily run your own. Questions? Please report any bugs you find on the Github issues page.  Get started!  