Simple Peer JS
Simple peer-to-peer with WebRTC.
Basically: simple-peer + PeerJs
This project uses the signal exchange mechanism of PeerJs with the WebRTC implementation of simple-peer.
This works in nodeand the browser
See examples for code examples!
Setup
Include the library
with npm: npm install simple-peerjs
and the usage:
const SimplePeerJs = ;
Create a peer
const connMan = '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 = await connMan; // conn.peer is an instance of simple-peerconnpeer;
Receive
connMan;
Media calls
Passing a stream is similar to simple-peer
const SimplePeerJs = ; { const peer = ; peer; // get peer id const peerId = await peerid; // get video/voice stream const stream = navigatormediaDevices; const initiator = ; const initiatorConnection = await initiator;} ;
It also can be done dynamically
const SimplePeerJs = ; { const peer = ; peer; // get peer id const peerId = await peerid; const initiator = ; const initiatorConnection = await initiator; ;} ;
In Node
To use this library in Node, pass in opts.wrtc
, opts.fetch
and opts.WebSocket
as a parameters:
const wrtc = ;const fetch = ;const WebSocket = ;const SimplePeerJs = ; const peer = wrtc fetch WebSocket
Api
peer = new SimplePeerJs(opts)
Creates a SimplePeerJs instance which delegates signaling to PeerJs and creates simple-peer WebRTC channels.
The following properties can be specified on opts
:
id
: PeerJs id (if absent, peerjs server will assign a free id)simplePeer
:simple-peer
configuration optionswrtc
: custom webrtc implementation, mainly useful in node to specify in the wrtc package. Contains an object with the properties:fetch
: fetch-like function implementationWebSocket
: WebSocket-like implementation
peer.id
Promise that resolves to the peer id
peer.connect(peerId, opts)
Tries to connect to peerId
. Returns a promise with an object that has a simple-peer instance on the peer
property.
The second parameter, opts
, is optional. If passed, it will be used as the simple-peer configuration.
peer.close()
Closes Signaling connection to PeerJS and all active peer connections.
Events
SimplePeerJs objects are instances of EventEmitter
.
peer.on('connect', connection)
Emitted when a new connection has been created. connection
has a peer
property which is a simple-peer object.
peer.on('error', error)
Emitted on every error.
License
SimplePeerJS is licensed under the MIT License.