@bg-dev/simple-peerjs
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

Simple Peerjs

npm version npm downloads License

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/simple-peerjs

Instantiate 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: 10000,
});
  • 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.getPeerData(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.getPeerData(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

License

MIT License

Package Sidebar

Install

npm i @bg-dev/simple-peerjs

Weekly Downloads

1

Version

0.2.1

License

MIT

Unpacked Size

24 kB

Total Files

15

Last publish

Collaborators

  • bg-org