2020-03-19 23:00:59 +03:00
2019-12-16 19:02:12 +03:00
ref
2019-08-22 20:59:55 +03:00
2020-03-11 11:02:32 +03:00
2020-03-11 11:02:32 +03:00
2020-03-19 22:15:17 +03:00
2019-08-23 16:47:34 +03:00
2019-12-16 01:15:05 +03:00
ref
2019-08-22 20:59:55 +03:00
2019-11-08 10:55:59 -03:00
ref
2019-04-01 14:34:59 +03:00
2014-10-23 09:03:20 -05:00
2020-03-11 12:04:21 +03:00
2019-12-15 15:12:06 +03:00
2013-02-07 23:05:20 -08:00
2020-03-11 12:04:21 +03:00
2020-03-14 10:10:00 +03:00
2020-03-19 23:00:59 +03:00
2019-12-15 14:17:37 +03:00

Build Status npm version Downloads Docker Image Size (latest semver)

PeerServer: A server for PeerJS

PeerServer helps broker connections between PeerJS clients. Data is not proxied through the server.

Run your own server on Gitpod!

Open in Gitpod

https://peerjs.com

Run PeerServer

  1. Install PeerServer from npm or github:

NPM

npm install peer

github

git clone https://github.com/peers/peerjs-server.git#master
npm install
  1. Run the server:
$> peerjs --port 9000 --key peerjs --path /myapp

Or, create a custom server:

const { PeerServer } = require('peer');
const server = PeerServer({port: 9000, path: '/myapp'});
  1. Check that server works: open browser with http://localhost:9000/myapp It should returns JSON with name, description and website fields.

Connecting to the server from PeerJS:

<script>
    const peer = new Peer('someid', {host: 'localhost', port: 9000, path: '/myapp'});
</script>

Using HTTPS: Simply pass in PEM-encoded certificate and key.

const fs = require('fs');
const { PeerServer } = require('peer');

const server = PeerServer({
  port: 9000,
  ssl: {
    key: fs.readFileSync('/path/to/your/ssl/key/here.key'),
    cert: fs.readFileSync('/path/to/your/ssl/certificate/here.crt')
  }
});

Running PeerServer behind a reverse proxy

Make sure to set the proxied option, otherwise IP based limiting will fail. The option is passed verbatim to the expressjs trust proxy setting if it is truthy.

const { PeerServer } = require('peer');
const server = PeerServer({port: 9000, path: '/myapp', proxied: true});

Combining with existing express app

const express = require('express');
const app = express();
const { ExpressPeerServer } = require('peer');

app.get('/', (req, res, next) => { res.send('Hello world!'); });

// =======

const server = app.listen(9000);

const options = {
    debug: true,
    path: '/peerjs'
}

const peerserver = ExpressPeerServer(server, options);

app.use(options.path, peerserver);

// == OR ==

const server = require('http').createServer(app);
const peerserver = ExpressPeerServer(server, options);

app.use(options.path, peerserver);

server.listen(9000);

// ========

Events

The 'connection' event is emitted when a peer connects to the server.

peerserver.on('connection', (client) => { ... });

The 'disconnect' event is emitted when a peer disconnects from the server or when the peer can no longer be reached.

peerserver.on('disconnect', (client) => { ... });

Running tests

npm test

Docker

We have 'ready to use' images on docker hub: https://hub.docker.com/r/peerjs/peerjs-server

To run the latest image:

docker run -p 9000:9000 -d peerjs/peerjs-server

You can build a new image simply by calling:

docker build -t myimage https://github.com/peers/peerjs-server.git

To run the image execute this:

docker run -p 9000:9000 -d myimage

This will start a peerjs server on port 9000 exposed on port 9000 with key peerjs on path /myapp.

Open browser with http://localhost:9000/myapp It should returns JSON with name, description and website fields.

Problems?

Discuss PeerJS on our Telegram chat: https://t.me/joinchat/ENhPuhTvhm8WlIxTjQf7Og

Please post any bugs as a Github issue.

Description
Languages
TypeScript 91.9%
JavaScript 7.1%
Dockerfile 1%