|
5 жил өмнө | |
---|---|---|
.github | 5 жил өмнө | |
bin | 5 жил өмнө | |
dist | 5 жил өмнө | |
src | 5 жил өмнө | |
test | 5 жил өмнө | |
.eslintignore | 5 жил өмнө | |
.eslintrc.json | 5 жил өмнө | |
.gitignore | 5 жил өмнө | |
.gitpod.yml | 5 жил өмнө | |
.travis.yml | 6 жил өмнө | |
Dockerfile | 5 жил өмнө | |
LICENSE | 12 жил өмнө | |
README.md | 5 жил өмнө | |
app.json | 10 жил өмнө | |
changelog.md | 5 жил өмнө | |
package-lock.json | 5 жил өмнө | |
package.json | 5 жил өмнө | |
tsconfig.json | 5 жил өмнө |
PeerServer helps broker connections between PeerJS clients. Data is not proxied through the server.
Run your own server on Gitpod!
If you don't want to develop anything, just enter a few commands below.
Install the package globally:
$ npm install peer -g
Run the server:
$ peerjs --port 9000 --key peerjs --path /myapp
Started PeerServer on ::, port: 9000, path: /myapp (v. 0.3.2)
Check it: http://127.0.0.1:9000/myapp It should returns JSON with name, description and website fields.
Also, you can use Docker image to run a new container:
$ docker run -p 9000:9000 -d peerjs/peerjs-server
If you have your own server, you can attach PeerServer.
Install the package:
#$ cd your-project-path
$ npm install peer
Use PeerServer object to create a new server:
const { PeerServer } = require('peer');
const peerServer = PeerServer({ port: 9000, path: '/myapp' });
Check it: http://127.0.0.1:9000/myapp It should returns JSON with name, description and website fields.
<script>
const peer = new Peer('someid', {
host: 'localhost',
port: 9000,
path: '/myapp'
});
</script>
You can provide config object to PeerServer
function or specify options for peerjs
CLI.
CLI option | JS option | Description | Required | Default |
---|---|---|---|---|
--port, -p |
port |
Port to listen (number) | Yes | |
--key, -k |
key |
Connection key (string). Client must provide it to call an API methods | No | "peerjs" |
--path |
path |
Path (string). The server responds for requests to the root URL + path. E.g. Set the path to /myapp and run server on 9000 port via peerjs --port 9000 --path /myapp Then open http://127.0.0.1:9000/myapp - you should see a JSON reponse. |
No | "/" |
--proxied |
proxied |
Set true if PeerServer stays behind a reverse proxy (boolean) |
No | false |
--expire_timeout, -t |
expire_timeout |
The amount of time after which an EXPIRE message will be sent to initiator (milliseconds). This mean that other client didn't have a connection with server. |
No | 5000 |
--alive_timeout |
alive_timeout |
Timeout for broken connection (milliseconds). If the server doesn't receive any data from client (includes pong messages), the client's connection will be destroyed. |
No | 60000 |
--concurrent_limit, -c |
concurrent_limit |
Maximum number of clients' connections to WebSocket server (number) | No | 5000 |
--sslkey |
sslkey |
Path to SSL key (string) | No | |
--sslcert |
sslcert |
Path to SSL certificate (string) | No | |
--allow_discovery |
allow_discovery |
Allow to use /peers API method to get an array of ids of all connected clients (boolean) |
No | |
generateClientId |
A function which generate random client IDs when executes /id API method (() => string ) |
No | uuid/v4 |
Simply pass in PEM-encoded certificate and key.
const fs = require('fs');
const { PeerServer } = require('peer');
const peerServer = PeerServer({
port: 9000,
ssl: {
key: fs.readFileSync('/path/to/your/ssl/key/here.key'),
cert: fs.readFileSync('/path/to/your/ssl/certificate/here.crt')
}
});
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 peerServer = PeerServer({
port: 9000,
path: '/myapp',
proxied: true
});
By default, PeerServer uses uuid/v4
npm package to generate random client IDs.
You can set generateClientId
option in config to specify a custom function to generate client IDs.
const { PeerServer } = require('peer');
const customGenerationFunction = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
const peerServer = PeerServer({
port: 9000,
path: '/myapp',
generateClientId: customGenerationFunction
});
Open http://127.0.0.1:9000/myapp/peerjs/id to see a new random id.
const express = require('express');
const { ExpressPeerServer } = require('peer');
const app = express();
app.get('/', (req, res, next) => res.send('Hello world!'));
// =======
const server = app.listen(9000);
const peerServer = ExpressPeerServer(server, {
debug: true,
path: '/myapp'
});
app.use('/peerjs', peerServer);
// == OR ==
const http = require('http');
const server = http.createServer(app);
const peerServer = ExpressPeerServer(server, {
debug: true,
path: '/myapp'
});
app.use('/peerjs', peerServer);
server.listen(9000);
// ========
Open the browser and check http://127.0.0.1:9000/peerjs/myapp
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) => { ... });
$ npm test
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. http://localhost:9000/myapp/peerjs/id - should returns a random string (random client id)
Discuss PeerJS on our Telegram chat: https://t.me/joinchat/ENhPuhTvhm8WlIxTjQf7Og
Please post any bugs as a Github issue.