diff --git a/README.md b/README.md index 9fc4515..a212387 100644 --- a/README.md +++ b/README.md @@ -12,32 +12,46 @@ PeerServer helps broker connections between PeerJS clients. Data is not proxied Install the library: - npm install peer +```bash +$> npm install peer +``` Run the server: - var PeerServer = require('peer').PeerServer; - var server = new PeerServer({ port: 9000 }); +```bash +$> 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: - +```html + +``` Using HTTPS: Simply pass in PEM-encoded certificate and key. - var fs = require('fs'); - var PeerServer = require('peer').PeerServer; +```javascript +var fs = require('fs'); +var PeerServer = require('peer').PeerServer; - var server = new PeerServer({ - port: 9000, - ssl: { - key: fs.readFileSync('/path/to/your/ssl/key/here.key'), - certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt') - } - }); +var server = new PeerServer({ + port: 9000, + ssl: { + key: fs.readFileSync('/path/to/your/ssl/key/here.key'), + certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt') + } +}); +``` ## Problems? diff --git a/bin/peerjs b/bin/peerjs new file mode 100755 index 0000000..83ba95a --- /dev/null +++ b/bin/peerjs @@ -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 +); diff --git a/lib/server.js b/lib/server.js index 5cf2572..9bea262 100644 --- a/lib/server.js +++ b/lib/server.js @@ -73,7 +73,7 @@ PeerServer.prototype._initializeWSS = function() { socket.close(); return; } - + if (!self._clients[key] || !self._clients[key][id]) { self._checkKey(key, ip, function(err) { if (!err) { @@ -203,7 +203,7 @@ PeerServer.prototype._initializeHTTP = function() { var id = req.params.id; var token = req.params.token; var key = req.params.key; - var ip = req.ip; + var ip = req.connection.remoteAddress; if (!self._clients[key] || !self._clients[key][id]) { self._checkKey(key, ip, function(err) { @@ -307,7 +307,7 @@ PeerServer.prototype._pruneOutstanding = function() { var keys = Object.keys(this._outstanding); for (var k = 0, kk = keys.length; k < kk; k += 1) { 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) { var offers = this._outstanding[key][dsts[i]]; var seen = {}; diff --git a/package.json b/package.json index 2da52db..d926e79 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.1.6", "description": "Peer-to-peer data in browsers", "main": "lib/server.js", + "bin": { "peerjs": "./bin/peerjs" }, "repository": { "type": "git", "url": "git://github.com/peers/peerjs-server.git" @@ -11,6 +12,7 @@ "license": "MIT", "dependencies": { "restify": "~2.3.5", - "ws": "~0.4.25" + "ws": "~0.4.25", + "optimist": "*" } }