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,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
// No API key required when not using cloud server <script>
var peer = new Peer('someid', {host: 'localhost', port: 9000}); // No API key required when not using cloud server
</script> var peer = new Peer('someid', {host: 'localhost', port: 9000});
</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
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

@ -73,7 +73,7 @@ PeerServer.prototype._initializeWSS = function() {
socket.close(); socket.close();
return; return;
} }
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) {
if (!err) { if (!err) {
@ -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) {
@ -307,7 +307,7 @@ PeerServer.prototype._pruneOutstanding = function() {
var keys = Object.keys(this._outstanding); var keys = Object.keys(this._outstanding);
for (var k = 0, kk = keys.length; k < kk; k += 1) { for (var k = 0, kk = keys.length; k < kk; k += 1) {
var key = keys[k]; var key = keys[k];
var dsts = Object.keys(this._outstanding[key]); var dsts = Object.keys(this._outstanding[key]);
for (var i = 0, ii = dsts.length; i < ii; i += 1) { for (var i = 0, ii = dsts.length; i < ii; i += 1) {
var offers = this._outstanding[key][dsts[i]]; var offers = this._outstanding[key][dsts[i]];
var seen = {}; var seen = {};

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