Merge pull request #17 from igrigorik/master
Add bin script for simple(r) bootstrap
This commit is contained in:
commit
672853658a
32
README.md
32
README.md
@ -12,32 +12,46 @@ PeerServer helps broker connections between PeerJS clients. Data is not proxied
|
|||||||
|
|
||||||
Install the library:
|
Install the library:
|
||||||
|
|
||||||
npm install peer
|
```bash
|
||||||
|
$> npm install peer
|
||||||
|
```
|
||||||
|
|
||||||
Run the server:
|
Run the server:
|
||||||
|
|
||||||
var PeerServer = require('peer').PeerServer;
|
```bash
|
||||||
var server = new PeerServer({ port: 9000 });
|
$> peerjs --port 9000 --key peerjs
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, create a custom server:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var PeerServer = require('peer').PeerServer;
|
||||||
|
var server = new PeerServer({ port: 9000 });
|
||||||
|
```
|
||||||
|
|
||||||
Connecting to the server from PeerJS:
|
Connecting to the server from PeerJS:
|
||||||
|
|
||||||
<script>
|
```html
|
||||||
|
<script>
|
||||||
// No API key required when not using cloud server
|
// No API key required when not using cloud server
|
||||||
var peer = new Peer('someid', {host: 'localhost', port: 9000});
|
var peer = new Peer('someid', {host: 'localhost', port: 9000});
|
||||||
</script>
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
Using HTTPS: Simply pass in PEM-encoded certificate and key.
|
Using HTTPS: Simply pass in PEM-encoded certificate and key.
|
||||||
|
|
||||||
var fs = require('fs');
|
```javascript
|
||||||
var PeerServer = require('peer').PeerServer;
|
var fs = require('fs');
|
||||||
|
var PeerServer = require('peer').PeerServer;
|
||||||
|
|
||||||
var server = new PeerServer({
|
var server = new PeerServer({
|
||||||
port: 9000,
|
port: 9000,
|
||||||
ssl: {
|
ssl: {
|
||||||
key: fs.readFileSync('/path/to/your/ssl/key/here.key'),
|
key: fs.readFileSync('/path/to/your/ssl/key/here.key'),
|
||||||
certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt')
|
certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt')
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## Problems?
|
## Problems?
|
||||||
|
|
||||||
|
71
bin/peerjs
Executable file
71
bin/peerjs
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
var path = require('path')
|
||||||
|
, pkg = require('../package.json')
|
||||||
|
, fs = require('fs')
|
||||||
|
, version = pkg.version
|
||||||
|
, PeerServer = require('../lib/server').PeerServer
|
||||||
|
, opts = require('optimist')
|
||||||
|
.usage('Usage: $0')
|
||||||
|
.options({
|
||||||
|
debug: {
|
||||||
|
demand: false,
|
||||||
|
alias: 'd',
|
||||||
|
description: 'debug',
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
timeout: {
|
||||||
|
demand: false,
|
||||||
|
alias: 't',
|
||||||
|
description: 'timeout (milliseconds)',
|
||||||
|
default: 5000
|
||||||
|
},
|
||||||
|
ip_limit: {
|
||||||
|
demand: false,
|
||||||
|
alias: 'i',
|
||||||
|
description: 'IP limit',
|
||||||
|
default: 5000
|
||||||
|
},
|
||||||
|
concurrent_limit: {
|
||||||
|
demand: false,
|
||||||
|
alias: 'c',
|
||||||
|
description: 'concurrent limit',
|
||||||
|
default: 5000
|
||||||
|
},
|
||||||
|
key: {
|
||||||
|
demand: false,
|
||||||
|
alias: 'k',
|
||||||
|
description: 'connection key',
|
||||||
|
default: 'peerjs'
|
||||||
|
},
|
||||||
|
sslkey: {
|
||||||
|
demand: false,
|
||||||
|
description: 'path to SSL key'
|
||||||
|
},
|
||||||
|
sslcert: {
|
||||||
|
demand: false,
|
||||||
|
description: 'path to SSL certificate'
|
||||||
|
},
|
||||||
|
port: {
|
||||||
|
demand: true,
|
||||||
|
alias: 'p',
|
||||||
|
description: 'port',
|
||||||
|
}
|
||||||
|
}).argv;
|
||||||
|
|
||||||
|
opts.version = version;
|
||||||
|
|
||||||
|
if (opts.sslkey && opts.sslcert) {
|
||||||
|
opts['ssl'] = {};
|
||||||
|
opts.ssl['key'] = fs.readFileSync(path.resolve(opts.sslkey));
|
||||||
|
opts.ssl['certificate'] = fs.readFileSync(path.resolve(opts.sslcert));
|
||||||
|
}
|
||||||
|
|
||||||
|
process.on('uncaughtException', function(e) {
|
||||||
|
console.error('Error: ' + e);
|
||||||
|
});
|
||||||
|
|
||||||
|
var server = new PeerServer(opts);
|
||||||
|
console.log(
|
||||||
|
"Started PeerServer, port: " + opts.port + (" (v. %s)"), version
|
||||||
|
);
|
@ -203,7 +203,7 @@ PeerServer.prototype._initializeHTTP = function() {
|
|||||||
var id = req.params.id;
|
var id = req.params.id;
|
||||||
var token = req.params.token;
|
var token = req.params.token;
|
||||||
var key = req.params.key;
|
var key = req.params.key;
|
||||||
var ip = req.ip;
|
var ip = req.connection.remoteAddress;
|
||||||
|
|
||||||
if (!self._clients[key] || !self._clients[key][id]) {
|
if (!self._clients[key] || !self._clients[key][id]) {
|
||||||
self._checkKey(key, ip, function(err) {
|
self._checkKey(key, ip, function(err) {
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"version": "0.1.6",
|
"version": "0.1.6",
|
||||||
"description": "Peer-to-peer data in browsers",
|
"description": "Peer-to-peer data in browsers",
|
||||||
"main": "lib/server.js",
|
"main": "lib/server.js",
|
||||||
|
"bin": { "peerjs": "./bin/peerjs" },
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/peers/peerjs-server.git"
|
"url": "git://github.com/peers/peerjs-server.git"
|
||||||
@ -11,6 +12,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"restify": "~2.3.5",
|
"restify": "~2.3.5",
|
||||||
"ws": "~0.4.25"
|
"ws": "~0.4.25",
|
||||||
|
"optimist": "*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user