Browse Source

Merge pull request #17 from igrigorik/master

Add bin script for simple(r) bootstrap
Michelle Bu 12 years ago
parent
commit
672853658a
4 changed files with 108 additions and 21 deletions
  1. 31 17
      README.md
  2. 71 0
      bin/peerjs
  3. 3 3
      lib/server.js
  4. 3 1
      package.json

+ 31 - 17
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:
 
-    <script>
-        // No API key required when not using cloud server
-        var peer = new Peer('someid', {host: 'localhost', port: 9000});
-    </script>
+```html
+<script>
+    // No API key required when not using cloud server
+    var peer = new Peer('someid', {host: 'localhost', port: 9000});
+</script>
+```
 
 Using HTTPS: Simply pass in PEM-encoded certificate and key.
 
-    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')
-      }
-    });
+```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')
+  }
+});
+```
 
 ## Problems?
 

+ 71 - 0
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
+);

+ 3 - 3
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 = {};

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