PeerJS: Simple peer-to-peer with WebRTC
![Sponsors on Open Collective](https://opencollective.com/peer/sponsors/badge.svg)
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 modules:
npm install peerjs
or yarn add peerjs
and the usage:
import Peer from 'peerjs';
Create a Peer
Get a free API key. Your id only needs to be unique to the namespace of your API key.
var peer = new Peer('pick-an-id', {key: 'myapikey'});
Data connections
Connect
var conn = peer.connect('another-peers-id');
conn.on('open', function(){
conn.send('hi!');
});
Receive
peer.on('connection', function(conn) {
conn.on('data', function(data){
console.log(data);
});
});
Media calls
Call
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
navigator.getUserMedia({video: true, audio: true}, function(stream) {
var call = peer.call('another-peers-id', stream);
call.on('stream', function(remoteStream) {
});
}, function(err) {
console.log('Failed to get local stream' ,err);
});
Answer
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
peer.on('call', function(call) {
navigator.getUserMedia({video: true, audio: true}, function(stream) {
call.answer(stream);
call.on('stream', function(remoteStream) {
});
}, function(err) {
console.log('Failed to get local stream' ,err);
});
});
Links
Contributors
This project exists thanks to all the people who contribute. [Contribute].
![](https://opencollective.com/peer/contributors.svg?width=890&button=false)
Backers
Thank you to all our backers! [Become a backer]
![](https://opencollective.com/peer/backer/100/avatar.svg?requireActive=false)
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
![](https://opencollective.com/peer/sponsor/9/avatar.svg)
License
PeerJS is licensed under the MIT License.