فهرست منبع

server ready for testing

Michelle Bu 12 سال پیش
والد
کامیت
2ee3d72978
3فایلهای تغییر یافته به همراه33 افزوده شده و 11 حذف شده
  1. 6 3
      public/js/sink.js
  2. 6 2
      public/js/source.js
  3. 21 6
      server.js

+ 6 - 3
public/js/sink.js

@@ -1,6 +1,6 @@
 function SinkPeer(options, readyfn) {
   this._config = options.config || {};
-  this._name = options.name || 'StreamAPI';
+  this._source = options.source || 'StreamAPI';
   this._pc = null;
   this._id = null;
   this._dc = null;
@@ -10,7 +10,7 @@ function SinkPeer(options, readyfn) {
 
 SinkPeer.prototype.socketInit = function(cb) {
   self = this;
-  this._socket.emit('sink', function(data) {
+  this._socket.emit('sink', { source: this._source }, function(data) {
     self._id = data.id;
     self._pc = new mozRTCPeerConnection(self._config);
 
@@ -20,7 +20,10 @@ SinkPeer.prototype.socketInit = function(cb) {
       self._pc.setRemoteDescription(data.sdp, function() {
         self._pc.createAnswer(function(answer) {
           self._pc.setLocalDescription(answer, function() {
-            self._socket.emit('answer', { 'sdp': answer, 'source': data.source });
+            self._socket.emit('answer',
+                { 'sink' = this._id,'sdp': answer, 'source': data.source });
+            // Firefoxism
+            self._pc.connectDataConnection(5001,5000);
           });
         });
       });

+ 6 - 2
public/js/source.js

@@ -26,13 +26,17 @@ SourcePeer.prototype.socketInit = function() {
       self.handleStream(pc, target, function() {
         pc.createOffer(function(offer) {
           pc.setLocalDescription(offer);
-          self._socket.emit('offer', { 'sdp': offer, 'sink': target });
+          self._socket.emit('offer',
+              { 'sdp': offer, 'sink': target, 'source': this._id });
         });
       });
     });
 
-    self._socket.on('answer', function(data) {
+    self._socket.on('answer', function(data, fn) {
       self._pcs[data.sink].setRemoteDescription(data.sdp);
+      fn();
+      // Firefoxism
+      self._pcs[data.sink].connectDataConnection(5000,5001);
     });
   });
 };

+ 21 - 6
server.js

@@ -26,17 +26,32 @@ io.sockets.on('connection', function(socket) {
   clients[socket.id] = socket;
 
   // Source connected.
-  socket.on('source', function(from, msg) {
-
+  socket.on('source', function(msg, fn) {
+    fn({ 'id': socket.id });
+    connections(socket.id) = [];
+  });
+  // Sink connected.
+  socket.on('sink', function(msg, fn) {
+    var source_id = msg.source;
+    var sink_id = socket.id;
+    var source = clients[source_id];
+    source.emit('sink-connected', { 'sink': sink_id });
+    fn({ 'id': sink_id });
   });
 
   // Offer from src to dest.
-  socket.on('offer', function (from, msg) {
+  socket.on('offer', function (msg) {
+    sink = clients[msg.sink];
+    sink.emit('offer', msg);
   });
   // Answer from dest to src.
-  socket.on('answer', function (from, msg) {
-    var source = clients[msg.answer];
-    source.emit('client-connected' { member: msg.member, offer: msg.offer });
+  socket.on('answer', function (msg) {
+    source = msg.source;
+    source.emit('answer', msg, function() {
+      // Add to list of successful connections.
+      connections[msg.source].append(msg.sink);
+      console.log('Successful Offer/Answer between ', msg.source, ' and ', msg.sink);
+    });
   });
 
   socket.on('disconnect', function() {