Due to browsers' incomplete support of the WebRTC DataChannel specification, many features of PeerJS have caveats. View the status page for full details.
This class is a the BinaryJS websocket server. It is an EventEmitter
.
id
String. The id by which this peer will be identified when other peers try to connect to it. If no id is given, one will be generated by the serveroptions
Object
key
String. API key for cloud PeerServer. Is not used for servers other than cloud.peerjs.com
host
String. Server host. Default cloud.peerjs.com
port
Number. Server port. Default 80
config
Object. Configuration hash passed to RTCPeerConnection
. This hash contains the ICE servers. Default { 'iceServers': [{ 'url': 'stun:stun.l.google.com:19302' }] }
debug
Boolean. Prints verbose log messages. Default false
Construct a new Peer object.
The Peer object is used to connect to other Peer clients and also to receive connections from other clients.
The first argument is the id that other peers will use to connect to this peer, thus it must be unique for the given key
(if you're using PeerServer cloud) or server.
In the options, either a PeerServer Cloud key
must be provided or host
and port
for your own PeerServer. Note that the server is only for brokering connections and does not proxy data between peers.
The config
object is passed straight into instances of RTCPeerConnection
. For compatibility with symmetric NATs, you can provide your own TURN server. By default the STUN server provided by Google is used.
The given id of this peer.
If no id was specified in the constructor, this value will be undefined
util the open
event fires.
A hash of all current connections with the current peer. Keys are ids and values are instances of DataConnection
.
Connects to the remote peer specified by id
. Optionally takes a serialization
format, which can be json
, binary
, or none
. Defaults to binary
.
Returns a DataConnection
object.
id
String. The id of the remote peer to connect tometa
Optional metadata to pass to the remote peer. Can be any serializable typeBefore writing to / data will be emitted from the DataConnection
object that is returned, the open
event must fire. Also the error
event should be checked in case a connection cannot be made.
Close the server and terminate all connections.
function (connection, meta) { }
When a new connection is established from another peer to this peer, the DataConnection
object is emitted with this event. The meta
argument contains whatever metadata values passed into peer.connection(...)
by the remote peer.
Note that the open
event must fire on the DataConnection
before it is ready to read/write.
function(id) { }
Fired when the PeerServer connection is succesfully, fully, open. This event does not need to fire before creating or receiving connections. You should not wait for open before connecting to other peers or expecting to receive connections if connection speed is important.
id
is the id of this Peer
object, either provided in the constructor, or generated automatically by the PeerServer.
function (error) { }
Emitted when an unexpected event occurs. May or may not be fatal. Errors from the underlying socket are forwarded here.
This is the event emitted if you attempt to connect with an ID that is already being used.
function () { }
Emitted when the Peer object has closed it's connection with PeerServer so no more remote peer connections can be made or received..
This class is the interface two communicate between two peers. It is an EventEmitter
.
There is no constructor. A DataConnection
object must be obtained in the callback of peer.connect(...)
when initiating a peer-to-peer connection or emitted in the peer.on('connection', ...)
event when receiving a connection.
The id of the local peer that this connection belongs to.
The id of the remote peer this connection is connected to.
Whether the connection is open (ready for read and write).
The metadata passed in when the connection was created with peer.connect(...)
.
The serialization format of the connection. Can be binary
, json
, or none
for no serialization. Default serialization format is binary
.
Accepts data of any JSON type or binary type.
Data is serialized using BinaryPack and then sent to the remote peer.
Gracefully closes the connection.
function (data) { }
Emitted when data is received from the remote peer.
The data
parameter contains values exactly as put into the connection.send(...)
. Binary types will have been deserialized to ArrayBuffer
.
function () { }
Emitted when the connection is established and ready for writing. data
from the remote peer will also start to be emitted.
function (error) { }
If the client emits an error, this event is emitted (errors from the underlying RTCPeerConnection
and DataChannel
are forwarded here).
function () { }
Is emitted when the connection is closed.
The close
event is also emitted when the remote peer closes the connection.