Eden Tyler-Moss 2552e9d5f1 Added optional parameter to use a custom function to generate IDs.
The third parameter passed to PeerServer or ExpressPeerServer can
optionally be a function that returns any string value, which will be
used as the client ID. Checking whether the ID is already taken is not
to be handled by the function.

For instance:

ExpressPeerServer(,,() => {
  return 'abc';
})
2019-10-07 17:55:53 +01:00
2019-08-21 17:39:00 +03:00
2019-08-21 17:39:00 +03:00
2019-08-21 17:39:00 +03:00
2019-08-21 15:14:31 +03:00
2018-07-16 22:16:29 +02:00
ref
2019-04-01 14:34:59 +03:00
2014-10-23 09:03:20 -05:00
2019-08-21 15:25:40 +03:00
2019-04-11 13:36:14 +03:00
2013-02-07 23:05:20 -08:00
2019-08-21 15:19:03 +03:00
2019-10-03 12:01:56 +01:00

Build Status

PeerServer: A server for PeerJS

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

https://peerjs.com

Run PeerServer

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

Or, create a custom server:

$> npm install peerjs-server
import {PeerServer} from 'peerjs-server';

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

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.

import fs from 'fs';
import {PeerServer} from 'peerjs-server';

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.

import {PeerServer} from 'peerjs-server';

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

Combining with existing express app

import express from 'express';
import {ExpressPeerServer} from 'peerjs-server';

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

// =======

const server = app.listen(9000);

const options = {
    debug: true
}

const peerserver = ExpressPeerServer(server, options);

app.use('/api', peerserver);

// == OR ==

import http from 'http';

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

app.use('/peerjs', 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

You can build this image simply by calling:

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

To run the image execute this:

docker run -p 9000:9000 -d peerjs

This will start a peerjs server on port 9000 exposed on port 9000.

Problems?

Discuss PeerJS on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/peerjs

Please post any bugs as a Github issue.

Description
Languages
TypeScript 91.9%
JavaScript 7.1%
Dockerfile 1%