Michelle Bu пре 12 година
родитељ
комит
9a21d8ec7d
1 измењених фајлова са 42 додато и 31 уклоњено
  1. 42 31
      lib/server.js

+ 42 - 31
lib/server.js

@@ -5,12 +5,15 @@ var EventEmitter = require('events').EventEmitter;
 var WebSocketServer = require('ws').Server;
 var url = require('url');
 
+
+
 var allowCrossDomain = function(req, res, next) {
-  res.header('Access-Control-Allow-Origin', '*');
-  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
-  res.header('Access-Control-Allow-Headers', 'Content-Type');
+  res.setHeader('Access-Control-Allow-Origin', '*');
+  res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
+  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
+
   next();
-};
+}
 
 function PeerServer(options) {
   if (!(this instanceof PeerServer)) return new PeerServer(options);
@@ -18,11 +21,8 @@ function PeerServer(options) {
 
   this._app = express();
   this._httpServer = http.createServer(this._app);
-  var self = this;
-  this._app.configure(function() {
-    self._app.use(express.bodyParser());
-    self._app.use(allowCrossDomain);
-  });
+  this._app.use(express.bodyParser());
+  this._app.use(allowCrossDomain);
 
   options = util.extend({
     port: 80
@@ -102,6 +102,10 @@ PeerServer.prototype._initializeWSS = function() {
 PeerServer.prototype._initializeHTTP = function() {
   var self = this;
 
+  this._app.options('/*', function(req, res, next) {
+    res.send(200);
+  });
+
   // Server sets up HTTP streaming whether you get or post an ID.
   // Retrieve guaranteed random ID.
   this._app.get('/id', function(req, res) {
@@ -123,39 +127,46 @@ PeerServer.prototype._initializeHTTP = function() {
   this._app.post('/offer', function(req, res) {
     // TODO: if offer person does not exist, set a timeout for 10s. may need to
     // change switch.
-    var data = req.body.data;
-    var src = data.src;
-    var dst = data.dst;
-    self._handleTransmission('OFFER', src, dst, JSON.stringify(data));
+    var src = req.body.src;
+    var dst = req.body.dst;
+    self._handleTransmission('OFFER', src, dst, JSON.stringify(req.body));
+    res.send('success');
+  });
+
+  this._app.post('/ice', function(req, res) {
+    var src = req.body.src;
+    var dst = req.body.dst;
+    self._handleTransmission('ICE', src, dst, JSON.stringify(req.body));
+    res.send('success');
   });
 
   this._app.post('/answer', function(req, res) {
-    var data = req.body.data;
-    var src = data.src;
-    var dst = data.dst;
-    self._handleTransmission('ANSWER', src, dst, JSON.stringify(data));
+    var src = req.body.src;
+    var dst = req.body.dst;
+    self._handleTransmission('ANSWER', src, dst, JSON.stringify(req.body));
+    res.send('success');
   });
 };
 
 /** Saves a streaming response and takes care of timeouts and headers. */
 PeerServer.prototype._startStreaming = function(res, id, write) {
-    res.writeHead(200, {'Content-Type': 'application/octet-stream'});
-    if (!!write) {
-      write();
-    }
+  res.writeHead(200, {'Content-Type': 'application/octet-stream'});
+  if (!!write) {
+    write();
+  }
 
-    var pad = '00';
-    var iterations = 10;
-    for (var i = 0; i < iterations; i++) {
-      pad += pad;
-    }
-    res.write(pad + '\n');
+  var pad = '00';
+  var iterations = 10;
+  for (var i = 0; i < iterations; i++) {
+    pad += pad;
+  }
+  res.write(pad + '\n');
 
-    // Save res so we can write to it.
-    this._clients[id] = res;
+  // Save res so we can write to it.
+  this._clients[id] = res;
 
-    // Set timeout to expire.
-    this._timeouts[id] = setTimeout(function() { res.end('end') }, 10000);
+  // Set timeout to expire.
+  this._timeouts[id] = setTimeout(function() { res.end('end') }, 10000);
 };
 
 // TODO: fix for streaming