|
@@ -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;
|
|
|
}
|
|
|
|