Skip to content

cruxprotocol/peerjs

 
 

Repository files navigation

PeerJS: Simple peer-to-peer with WebRTC

Backers on Open Collective Sponsors on Open Collective

PeerJS provides a complete, configurable, and easy-to-use peer-to-peer API built on top of WebRTC, supporting both data channels and media streams.

Setup

Include the library

with npm: npm install peerjs and the usage:

import Peer from 'peerjs';

Create a Peer

const peer = new Peer('pick-an-id'); // You can pick your own id or omit the id if you want to get a random one from the server.

Data connections

Connect

const conn = peer.connect('another-peers-id'); conn.on('open', () => { conn.send('hi!'); });

Receive

peer.on('connection', (conn) => { conn.on('data', (data) => { // Will print 'hi!' console.log(data); }); });

Media calls

Call

navigator.mediaDevices.getUserMedia({video: true, audio: true}, (stream) => { const call = peer.call('another-peers-id', stream); call.on('stream', (remoteStream) => { // Show stream in some <video> element. }); }, (err) => { console.error('Failed to get local stream', err); });

Answer

peer.on('call', (call) => { navigator.mediaDevices.getUserMedia({video: true, audio: true}, (stream) => { call.answer(stream); // Answer the call with an A/V stream. call.on('stream', (remoteStream) => { // Show stream in some <video> element. }); }, (err) => { console.error('Failed to get local stream', err); }); });

Running tests

npm test

Links

Contributors

This project exists thanks to all the people who contribute. [Contribute].

Backers

Thank you to all our backers! [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

License

PeerJS is licensed under the MIT License.

About

Peer-to-peer data in the browser.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 100.0%