Giter Site home page Giter Site logo

peerjs-server's Introduction

Build Status npm version Downloads

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

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
}

const peerserver = ExpressPeerServer(server, options);

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

// == OR ==

const server = require('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 Telegram chat: https://t.me/joinchat/ENhPuhTvhm8WlIxTjQf7Og

Please post any bugs as a Github issue.

peerjs-server's People

Contributors

michelle avatar afrokick avatar ericz avatar michelle-stripe avatar lmb avatar igrigorik avatar floatdrop avatar luizbills avatar kidandcat avatar jondavidjohn avatar yosssi avatar arvindr21 avatar whytheplatypus avatar eordano avatar kapcash avatar gogjhan avatar ivelin avatar marceloeloelo avatar remingtonc avatar dylannz avatar heapwolf avatar stan-red avatar zhou-yg avatar

Stargazers

L.suyang avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.