فهرست منبع

browser compat check
;

Michelle Bu 12 سال پیش
والد
کامیت
e62559e562
1فایلهای تغییر یافته به همراه17 افزوده شده و 7 حذف شده
  1. 17 7
      lib/peer.js

+ 17 - 7
lib/peer.js

@@ -128,6 +128,11 @@ Peer.prototype._handleServerJSONMessage = function(message) {
       this._abort('unavailable-id', 'ID `'+this.id+'` is taken');
       break;
     case 'OFFER':
+      // Check that browsers match.
+      if (payload.browserisms !== util.browserisms) {
+        self._warn('incompatible-peer', 'Peer ' + self.peer + ' is on an incompatible browser.');
+        return;
+      }
       var options = {
         sdp: payload.sdp,
         labels: payload.labels,
@@ -169,10 +174,11 @@ Peer.prototype._handleServerJSONMessage = function(message) {
       this._abort('invalid-key', 'API KEY "' + this._key + '" is invalid');
       break;
     case 'PORT':
-      //if (util.browserisms === 'Firefox') {
-      //  connection.handlePort(payload);
-      //  break;
-      //}
+      // Firefoxism: exchanging ports.
+      if (util.browserisms === 'Firefox' && manager) {
+        manager.handlePort(payload);
+        break;
+      }
     default:
       util.log('Unrecognized message type:', message.type);
       break;
@@ -213,6 +219,12 @@ Peer.prototype._abort = function(type, message) {
   this.destroy();
   this.emit('error', err);
 };
+/** Emits an error message that things may not work. */
+Peer.prototype._warn = function(type, message) {
+  var err = new Error(message);
+  err.type = type;
+  this.emit('error', err);
+};
 
 Peer.prototype._cleanup = function() {
   var self = this;
@@ -234,9 +246,7 @@ Peer.prototype._cleanup = function() {
  * is waiting for an ID. */
 Peer.prototype.connect = function(peer, options) {
   if (this.disconnected) {
-    var err = new Error('This Peer has been disconnected from the server and');
-    err.type = 'peer-disconnected';
-    this.emit('error', err);
+    this._warn('peer-disconnected', 'This Peer has been disconnected from the server and');
     return;
   }