Natural Preference for Minification

    simple-peerjs

    1.0.1 • Public • Published

    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 = require('simple-peerjs');

    Create a peer

    const connMan = new SimplePeerJs('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.connect('another-peer-id');
     
    // conn.peer is an instance of simple-peer
    conn.peer.send('hi!');

    Receive

    connMan.on('connection', conn => {
      console.log('Peer connected:', conn.peerId);
     
      // conn.peer is an instance of simple-peer
      conn.peer.send('hello!');
     
      conn.peer.on('data', data => {
        console.log(data.toString());
      });
    });

    Media calls

    Passing a stream is similar to simple-peer

    const SimplePeerJs = require('simple-peerjs');
     
    async function main() {
      const peer = new SimplePeerJs();
     
      peer.on('connection', connection => {
        connection.peer.on('stream', stream => {
          // got remote video stream, now let's show it in a video tag
          const video = document.querySelector('video');
          video.srcObject = stream;
          video.play();
        });
      });
     
      // get peer id
      const peerId = await peer.id;
     
      // get video/voice stream
      const stream = navigator.mediaDevices.getUserMedia({
        video: true,
        audio: true,
      });
     
      const initiator = new SimplePeerJs();
      const initiatorConnection = await initiator.connect(peerId, { stream });
    }
     
    main();

    It also can be done dynamically

    const SimplePeerJs = require('simple-peerjs');
     
    async function main() {
      const peer = new SimplePeerJs();
     
      peer.on('connection', connection => {
        connection.peer.on('stream', stream => {
          // got remote video stream, now let's show it in a video tag
          const video = document.querySelector('video');
          video.srcObject = stream;
          video.play();
        });
      });
     
      // get peer id
      const peerId = await peer.id;
     
      const initiator = new SimplePeerJs();
      const initiatorConnection = await initiator.connect(peerId);
     
      setTimeout(async () => {
        // get video/voice stream
        const stream = navigator.mediaDevices.getUserMedia({
          video: true,
          audio: true,
        });
     
        initiator.addStream(stream);
      }, 10000);
    }
     
    main();

    In Node

    To use this library in Node, pass in opts.wrtc, opts.fetch and opts.WebSocket as a parameters:

    const wrtc = require('wrtc');
    const fetch = require('node-fetch');
    const WebSocket = require('ws');
    const SimplePeerJs = require('simple-peerjs');
     
    const peer = new SimplePeerJs({
      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:

    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.

    Keywords

    none

    Install

    npm i simple-peerjs

    DownloadsWeekly Downloads

    4

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    22.1 kB

    Total Files

    11

    Last publish

    Collaborators

    • nickcis