Merge pull request #17 from igrigorik/master

Add bin script for simple(r) bootstrap
This commit is contained in:
Michelle Bu 2013-07-06 11:50:09 -07:00
commit 672853658a
4 changed files with 107 additions and 20 deletions

View File

@ -12,22 +12,35 @@ 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:
```bash
$> peerjs --port 9000 --key peerjs
```
Or, create a custom server:
```javascript
var PeerServer = require('peer').PeerServer; var PeerServer = require('peer').PeerServer;
var server = new PeerServer({ port: 9000 }); var server = new PeerServer({ port: 9000 });
```
Connecting to the server from PeerJS: Connecting to the server from PeerJS:
```html
<script> <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.
```javascript
var fs = require('fs'); var fs = require('fs');
var PeerServer = require('peer').PeerServer; var PeerServer = require('peer').PeerServer;
@ -38,6 +51,7 @@ Using HTTPS: Simply pass in PEM-encoded certificate and 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
View 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
);

View File

@ -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) {

View File

@ -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": "*"
} }
} }