@bg-dev/simpler-peerjs v0.1.2
Simpler Peerjs
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.
The intended goal behind this work is to more simplify the usage by auto-handling of data connections and providing a global API to reference connections and trigger events.
Setup
Install the package:
npm i @bg-dev/simpler-peerjsInstantiate a new SimplePeer instance and set config options which extends Peer options:
const simplePeer = new SimplePeer({
rmVideoElId: "rm-video",
lcVideoElId: "lc-video",
callingTimeoutMs: 15000,
connectIntervalMs: 5000,
});rmVideoElId: id of video element for the remote stream.lcVideoElId: id of video element for the local stream.callingTimeoutMs: timeout in ms of a media call.connectIntervalMs: interval in ms of reconnect for a data connection.
Usage
When the local Peer id (your id) is available, for example on login, initialize simplePeer. This will connect the local peer to the Peer server.
simplePeer.init(lcPeerId);When the local peer id is no longer available, for example on logout, terminate simplePeer. This will disconnect the local peer from the Peer server and clear data connections.
simplePeer.end();When a remote peer is available register it by their Peer id. This will connect the local peer to the remote peer with reconnection set by connectIntervalMs.
simplePeer.addPeerData(rmPeerId);To get the added Peer data:
simplePeer.peerDataMap.get(rmPeerId);When a remote peer is no longer available unregister it. This will disconnect the local peer from the remote peer and clear the data connection.
simplePeer.removePeerData(rmPeerId);To send data to the remote peer:
simplePeer.peerDataMap.get(rmPeerId).sendData("data");To start a media call with the remote peer. The call will be auto-terminated when not accepted during timeout set by callingTimeoutMs.
simplePeer.peerMedia.startCall(rmPeerId);To accept an incoming media call:
simplePeer.peerMedia.acceptCall();To end an active or pending media call:
simplePeer.peerMedia.endCall();Events
The simplePeer triggers the following events that you can listen to via simplePeer.hooks.hook().
media:call: triggered on media call request which can be rejected by throwing an error.data:connection: triggered on data connection request which can be rejected by throwing an error.data:received: triggered on data reception.media:status: triggered on change of status of the media call.active: media is streaming.waiting: pending on the initial peer.calling: pending on the other peer.inactive: otherwise.
Development
# Install dependencies
pnpm i
# rename .example.env to .env
# Run peer server
pnpm peer
# Develop with the playground
pnpm dev