浏览代码

ref(Listenable): some classes to use Listenable

dev1
hristoterezov 8 年前
父节点
当前提交
c8291bcf2e

+ 1
- 1
JitsiConference.js 查看文件

1
 /* global Strophe, $, Promise */
1
 /* global Strophe, $, Promise */
2
 
2
 
3
 var logger = require("jitsi-meet-logger").getLogger(__filename);
3
 var logger = require("jitsi-meet-logger").getLogger(__filename);
4
-var RTC = require("./modules/RTC/RTC");
4
+import RTC from "./modules/RTC/RTC";
5
 var XMPPEvents = require("./service/xmpp/XMPPEvents");
5
 var XMPPEvents = require("./service/xmpp/XMPPEvents");
6
 var EventEmitter = require("events");
6
 var EventEmitter = require("events");
7
 import * as JitsiConferenceErrors from "./JitsiConferenceErrors";
7
 import * as JitsiConferenceErrors from "./JitsiConferenceErrors";

+ 1
- 1
JitsiMediaDevices.js 查看文件

1
 var EventEmitter = require("events");
1
 var EventEmitter = require("events");
2
 var RTCEvents = require('./service/RTC/RTCEvents');
2
 var RTCEvents = require('./service/RTC/RTCEvents');
3
-var RTC = require("./modules/RTC/RTC");
3
+import RTC from "./modules/RTC/RTC";
4
 var MediaType = require('./service/RTC/MediaType');
4
 var MediaType = require('./service/RTC/MediaType');
5
 import * as JitsiMediaDevicesEvents from "./JitsiMediaDevicesEvents";
5
 import * as JitsiMediaDevicesEvents from "./JitsiMediaDevicesEvents";
6
 var Statistics = require("./modules/statistics/statistics");
6
 var Statistics = require("./modules/statistics/statistics");

+ 1
- 1
JitsiMeetJS.js 查看文件

14
 var JitsiRecorderErrors = require("./JitsiRecorderErrors");
14
 var JitsiRecorderErrors = require("./JitsiRecorderErrors");
15
 var Logger = require("jitsi-meet-logger");
15
 var Logger = require("jitsi-meet-logger");
16
 var MediaType = require("./service/RTC/MediaType");
16
 var MediaType = require("./service/RTC/MediaType");
17
-var RTC = require("./modules/RTC/RTC");
17
+import RTC from "./modules/RTC/RTC";
18
 var RTCUIHelper = require("./modules/RTC/RTCUIHelper");
18
 var RTCUIHelper = require("./modules/RTC/RTCUIHelper");
19
 var Statistics = require("./modules/statistics/statistics");
19
 var Statistics = require("./modules/statistics/statistics");
20
 var Resolutions = require("./service/RTC/Resolutions");
20
 var Resolutions = require("./service/RTC/Resolutions");

+ 1
- 1
modules/RTC/JitsiLocalTrack.js 查看文件

8
 var MediaType = require('../../service/RTC/MediaType');
8
 var MediaType = require('../../service/RTC/MediaType');
9
 var RTCBrowserType = require("./RTCBrowserType");
9
 var RTCBrowserType = require("./RTCBrowserType");
10
 var RTCEvents = require("../../service/RTC/RTCEvents");
10
 var RTCEvents = require("../../service/RTC/RTCEvents");
11
-var RTCUtils = require("./RTCUtils");
11
+import RTCUtils from "./RTCUtils";
12
 var Statistics = require("../statistics/statistics");
12
 var Statistics = require("../statistics/statistics");
13
 var VideoType = require('../../service/RTC/VideoType');
13
 var VideoType = require('../../service/RTC/VideoType');
14
 
14
 

+ 1
- 1
modules/RTC/JitsiTrack.js 查看文件

1
 /* global __filename, module */
1
 /* global __filename, module */
2
 var logger = require("jitsi-meet-logger").getLogger(__filename);
2
 var logger = require("jitsi-meet-logger").getLogger(__filename);
3
 var RTCBrowserType = require("./RTCBrowserType");
3
 var RTCBrowserType = require("./RTCBrowserType");
4
-var RTCUtils = require("./RTCUtils");
4
+import RTCUtils from "./RTCUtils";
5
 import * as JitsiTrackEvents from "../../JitsiTrackEvents";
5
 import * as JitsiTrackEvents from "../../JitsiTrackEvents";
6
 var EventEmitter = require("events");
6
 var EventEmitter = require("events");
7
 var MediaType = require("../../service/RTC/MediaType");
7
 var MediaType = require("../../service/RTC/MediaType");

+ 501
- 526
modules/RTC/RTC.js
文件差异内容过多而无法显示
查看文件


+ 54
- 44
modules/RTC/RTCUtils.js 查看文件

24
 var VideoType = require("../../service/RTC/VideoType");
24
 var VideoType = require("../../service/RTC/VideoType");
25
 var CameraFacingMode = require("../../service/RTC/CameraFacingMode");
25
 var CameraFacingMode = require("../../service/RTC/CameraFacingMode");
26
 var GlobalOnErrorHandler = require("../util/GlobalOnErrorHandler");
26
 var GlobalOnErrorHandler = require("../util/GlobalOnErrorHandler");
27
+import Listenable from "../util/Listenable";
27
 
28
 
28
 // XXX Don't require Temasys unless it's to be used because it doesn't run on
29
 // XXX Don't require Temasys unless it's to be used because it doesn't run on
29
 // React Native, for example.
30
 // React Native, for example.
419
     // Initialize rawEnumerateDevicesWithCallback
420
     // Initialize rawEnumerateDevicesWithCallback
420
     initRawEnumerateDevicesWithCallback();
421
     initRawEnumerateDevicesWithCallback();
421
 
422
 
422
-    if (RTCUtils.isDeviceListAvailable() && rawEnumerateDevicesWithCallback) {
423
+    if (rtcUtils.isDeviceListAvailable() && rawEnumerateDevicesWithCallback) {
423
         rawEnumerateDevicesWithCallback(function (devices) {
424
         rawEnumerateDevicesWithCallback(function (devices) {
424
             currentlyAvailableMediaDevices = devices.splice(0);
425
             currentlyAvailableMediaDevices = devices.splice(0);
425
 
426
 
430
                 navigator.mediaDevices.addEventListener(
431
                 navigator.mediaDevices.addEventListener(
431
                     'devicechange',
432
                     'devicechange',
432
                     function () {
433
                     function () {
433
-                        RTCUtils.enumerateDevices(
434
+                        rtcUtils.enumerateDevices(
434
                             onMediaDevicesListChanged);
435
                             onMediaDevicesListChanged);
435
                     });
436
                     });
436
             } else {
437
             } else {
557
         },
558
         },
558
         function (error) {
559
         function (error) {
559
             Object.keys(options.streams).forEach(function(device) {
560
             Object.keys(options.streams).forEach(function(device) {
560
-                RTCUtils.stopMediaStream(options.streams[device]);
561
+                rtcUtils.stopMediaStream(options.streams[device]);
561
             });
562
             });
562
             logger.error(
563
             logger.error(
563
                 "failed to obtain " + device + " stream - stop", error);
564
                 "failed to obtain " + device + " stream - stop", error);
653
  */
654
  */
654
 function wrapAttachMediaStream(origAttachMediaStream) {
655
 function wrapAttachMediaStream(origAttachMediaStream) {
655
     return function(element, stream) {
656
     return function(element, stream) {
656
-        var res = origAttachMediaStream.apply(RTCUtils, arguments);
657
+        var res = origAttachMediaStream.apply(rtcUtils, arguments);
657
 
658
 
658
         if (stream
659
         if (stream
659
-                && RTCUtils.isDeviceChangeAvailable('output')
660
+                && rtcUtils.isDeviceChangeAvailable('output')
660
                 && stream.getAudioTracks
661
                 && stream.getAudioTracks
661
                 && stream.getAudioTracks().length
662
                 && stream.getAudioTracks().length
662
                 // we skip setting audio output if there was no explicit change
663
                 // we skip setting audio output if there was no explicit change
663
                 && audioOutputChanged) {
664
                 && audioOutputChanged) {
664
-            element.setSinkId(RTCUtils.getAudioOutputDevice())
665
+            element.setSinkId(rtcUtils.getAudioOutputDevice())
665
                 .catch(function (ex) {
666
                 .catch(function (ex) {
666
                     var err = new JitsiTrackError(ex, null, ['audiooutput']);
667
                     var err = new JitsiTrackError(ex, null, ['audiooutput']);
667
 
668
 
728
 }
729
 }
729
 
730
 
730
 //Options parameter is to pass config options. Currently uses only "useIPv6".
731
 //Options parameter is to pass config options. Currently uses only "useIPv6".
731
-var RTCUtils = {
732
-    init: function (options) {
732
+class RTCUtils extends Listenable {
733
+    constructor() {
734
+        super(eventEmitter);
735
+    }
733
 
736
 
737
+    init(options) {
734
         if (typeof(options.disableAEC) === "boolean") {
738
         if (typeof(options.disableAEC) === "boolean") {
735
             disableAEC = options.disableAEC;
739
             disableAEC = options.disableAEC;
736
             logger.info("Disable AEC: " + disableAEC);
740
             logger.info("Disable AEC: " + disableAEC);
903
                 resolve();
907
                 resolve();
904
             }
908
             }
905
         }.bind(this));
909
         }.bind(this));
906
-    },
910
+    }
911
+
907
     /**
912
     /**
908
     * @param {string[]} um required user media types
913
     * @param {string[]} um required user media types
909
     * @param {function} success_callback
914
     * @param {function} success_callback
916
     * @param {string} options.cameraDeviceId
921
     * @param {string} options.cameraDeviceId
917
     * @param {string} options.micDeviceId
922
     * @param {string} options.micDeviceId
918
     **/
923
     **/
919
-    getUserMediaWithConstraints: function ( um, success_callback, failure_callback, options) {
924
+    getUserMediaWithConstraints( um, success_callback, failure_callback, options) {
920
         options = options || {};
925
         options = options || {};
921
         var constraints = getConstraints(um, options);
926
         var constraints = getConstraints(um, options);
922
 
927
 
946
                 failure_callback(new JitsiTrackError(e, constraints, um));
951
                 failure_callback(new JitsiTrackError(e, constraints, um));
947
             }
952
             }
948
         }
953
         }
949
-    },
954
+    }
950
 
955
 
951
     /**
956
     /**
952
      * Creates the local MediaStreams.
957
      * Creates the local MediaStreams.
960
      * @param {string} options.micDeviceId
965
      * @param {string} options.micDeviceId
961
      * @returns {*} Promise object that will receive the new JitsiTracks
966
      * @returns {*} Promise object that will receive the new JitsiTracks
962
      */
967
      */
963
-    obtainAudioAndVideoPermissions: function (options) {
968
+    obtainAudioAndVideoPermissions (options) {
964
         var self = this;
969
         var self = this;
965
 
970
 
966
         options = options || {};
971
         options = options || {};
1109
                 }
1114
                 }
1110
             }
1115
             }
1111
         }.bind(this));
1116
         }.bind(this));
1112
-    },
1113
-    addListener: function (eventType, listener) {
1114
-        eventEmitter.on(eventType, listener);
1115
-    },
1116
-    removeListener: function (eventType, listener) {
1117
-        eventEmitter.removeListener(eventType, listener);
1118
-    },
1119
-    getDeviceAvailability: function () {
1117
+    }
1118
+
1119
+    getDeviceAvailability () {
1120
         return devices;
1120
         return devices;
1121
-    },
1122
-    isRTCReady: function () {
1121
+    }
1122
+
1123
+    isRTCReady () {
1123
         return rtcReady;
1124
         return rtcReady;
1124
-    },
1125
-    _isDeviceListAvailable: function () {
1125
+    }
1126
+
1127
+    _isDeviceListAvailable () {
1126
         if (!rtcReady)
1128
         if (!rtcReady)
1127
             throw new Error("WebRTC not ready yet");
1129
             throw new Error("WebRTC not ready yet");
1128
         var isEnumerateDevicesAvailable
1130
         var isEnumerateDevicesAvailable
1132
         }
1134
         }
1133
         return (typeof MediaStreamTrack !== "undefined" &&
1135
         return (typeof MediaStreamTrack !== "undefined" &&
1134
             MediaStreamTrack.getSources)? true : false;
1136
             MediaStreamTrack.getSources)? true : false;
1135
-    },
1137
+    }
1138
+
1136
     /**
1139
     /**
1137
      * Returns a promise which can be used to make sure that the WebRTC stack
1140
      * Returns a promise which can be used to make sure that the WebRTC stack
1138
      * has been initialized.
1141
      * has been initialized.
1141
      * Note that currently we do not detect stack initialization failure and
1144
      * Note that currently we do not detect stack initialization failure and
1142
      * the promise is never rejected(unless unexpected error occurs).
1145
      * the promise is never rejected(unless unexpected error occurs).
1143
      */
1146
      */
1144
-    onRTCReady: function() {
1147
+    onRTCReady () {
1145
         if (rtcReady) {
1148
         if (rtcReady) {
1146
             return Promise.resolve();
1149
             return Promise.resolve();
1147
         } else {
1150
         } else {
1155
                 // happens
1158
                 // happens
1156
             });
1159
             });
1157
         }
1160
         }
1158
-    },
1161
+    }
1162
+
1159
     /**
1163
     /**
1160
      * Checks if its possible to enumerate available cameras/microphones.
1164
      * Checks if its possible to enumerate available cameras/microphones.
1161
      *
1165
      *
1163
      * the WebRTC stack is ready, either with true if the device listing is
1167
      * the WebRTC stack is ready, either with true if the device listing is
1164
      * available available or with false otherwise.
1168
      * available available or with false otherwise.
1165
      */
1169
      */
1166
-    isDeviceListAvailable: function () {
1170
+    isDeviceListAvailable () {
1167
         return this.onRTCReady().then(function() {
1171
         return this.onRTCReady().then(function() {
1168
             return this._isDeviceListAvailable();
1172
             return this._isDeviceListAvailable();
1169
         }.bind(this));
1173
         }.bind(this));
1170
-    },
1174
+    }
1175
+
1171
     /**
1176
     /**
1172
      * Returns true if changing the input (camera / microphone) or output
1177
      * Returns true if changing the input (camera / microphone) or output
1173
      * (audio) device is supported and false if not.
1178
      * (audio) device is supported and false if not.
1175
      *      undefined or 'input', 'output' - for audio output device change.
1180
      *      undefined or 'input', 'output' - for audio output device change.
1176
      * @returns {boolean} true if available, false otherwise.
1181
      * @returns {boolean} true if available, false otherwise.
1177
      */
1182
      */
1178
-    isDeviceChangeAvailable: function (deviceType) {
1183
+    isDeviceChangeAvailable (deviceType) {
1179
         return deviceType === 'output' || deviceType === 'audiooutput'
1184
         return deviceType === 'output' || deviceType === 'audiooutput'
1180
             ? isAudioOutputDeviceChangeAvailable
1185
             ? isAudioOutputDeviceChangeAvailable
1181
             : RTCBrowserType.isChrome() ||
1186
             : RTCBrowserType.isChrome() ||
1184
                 RTCBrowserType.isTemasysPluginUsed()||
1189
                 RTCBrowserType.isTemasysPluginUsed()||
1185
                 RTCBrowserType.isNWJS() ||
1190
                 RTCBrowserType.isNWJS() ||
1186
                 RTCBrowserType.isElectron();
1191
                 RTCBrowserType.isElectron();
1187
-    },
1192
+    }
1188
     /**
1193
     /**
1189
      * A method to handle stopping of the stream.
1194
      * A method to handle stopping of the stream.
1190
      * One point to handle the differences in various implementations.
1195
      * One point to handle the differences in various implementations.
1191
      * @param mediaStream MediaStream object to stop.
1196
      * @param mediaStream MediaStream object to stop.
1192
      */
1197
      */
1193
-    stopMediaStream: function (mediaStream) {
1198
+    stopMediaStream (mediaStream) {
1194
         mediaStream.getTracks().forEach(function (track) {
1199
         mediaStream.getTracks().forEach(function (track) {
1195
             // stop() not supported with IE
1200
             // stop() not supported with IE
1196
             if (!RTCBrowserType.isTemasysPluginUsed() && track.stop) {
1201
             if (!RTCBrowserType.isTemasysPluginUsed() && track.stop) {
1216
             delete mediaStream.jitsiObjectURL;
1221
             delete mediaStream.jitsiObjectURL;
1217
             (URL || webkitURL).revokeObjectURL(url);
1222
             (URL || webkitURL).revokeObjectURL(url);
1218
         }
1223
         }
1219
-    },
1224
+    }
1225
+
1220
     /**
1226
     /**
1221
      * Returns whether the desktop sharing is enabled or not.
1227
      * Returns whether the desktop sharing is enabled or not.
1222
      * @returns {boolean}
1228
      * @returns {boolean}
1223
      */
1229
      */
1224
-    isDesktopSharingEnabled: function () {
1230
+    isDesktopSharingEnabled () {
1225
         return screenObtainer.isSupported();
1231
         return screenObtainer.isSupported();
1226
-    },
1232
+    }
1233
+
1227
     /**
1234
     /**
1228
      * Sets current audio output device.
1235
      * Sets current audio output device.
1229
      * @param {string} deviceId - id of 'audiooutput' device from
1236
      * @param {string} deviceId - id of 'audiooutput' device from
1232
      * @returns {Promise} - resolves when audio output is changed, is rejected
1239
      * @returns {Promise} - resolves when audio output is changed, is rejected
1233
      *      otherwise
1240
      *      otherwise
1234
      */
1241
      */
1235
-    setAudioOutputDevice: function (deviceId) {
1242
+    setAudioOutputDevice (deviceId) {
1236
         if (!this.isDeviceChangeAvailable('output')) {
1243
         if (!this.isDeviceChangeAvailable('output')) {
1237
             Promise.reject(
1244
             Promise.reject(
1238
                 new Error('Audio output device change is not supported'));
1245
                 new Error('Audio output device change is not supported'));
1248
                 eventEmitter.emit(RTCEvents.AUDIO_OUTPUT_DEVICE_CHANGED,
1255
                 eventEmitter.emit(RTCEvents.AUDIO_OUTPUT_DEVICE_CHANGED,
1249
                     deviceId);
1256
                     deviceId);
1250
             });
1257
             });
1251
-    },
1258
+    }
1259
+
1252
     /**
1260
     /**
1253
      * Returns currently used audio output device id, '' stands for default
1261
      * Returns currently used audio output device id, '' stands for default
1254
      * device
1262
      * device
1255
      * @returns {string}
1263
      * @returns {string}
1256
      */
1264
      */
1257
-    getAudioOutputDevice: function () {
1265
+    getAudioOutputDevice () {
1258
         return audioOutputDeviceId;
1266
         return audioOutputDeviceId;
1259
-    },
1267
+    }
1260
 
1268
 
1261
     /**
1269
     /**
1262
      * Returns list of available media devices if its obtained, otherwise an
1270
      * Returns list of available media devices if its obtained, otherwise an
1263
      * empty array is returned/
1271
      * empty array is returned/
1264
      * @returns {Array} list of available media devices.
1272
      * @returns {Array} list of available media devices.
1265
      */
1273
      */
1266
-    getCurrentlyAvailableMediaDevices: function () {
1274
+    getCurrentlyAvailableMediaDevices () {
1267
         return currentlyAvailableMediaDevices;
1275
         return currentlyAvailableMediaDevices;
1268
-    },
1276
+    }
1269
 
1277
 
1270
     /**
1278
     /**
1271
      * Returns event data for device to be reported to stats.
1279
      * Returns event data for device to be reported to stats.
1272
      * @returns {MediaDeviceInfo} device.
1280
      * @returns {MediaDeviceInfo} device.
1273
      */
1281
      */
1274
-    getEventDataForActiveDevice: function (device) {
1282
+    getEventDataForActiveDevice (device) {
1275
         var devices = [];
1283
         var devices = [];
1276
         var deviceData = {
1284
         var deviceData = {
1277
             "deviceId": device.deviceId,
1285
             "deviceId": device.deviceId,
1282
         devices.push(deviceData);
1290
         devices.push(deviceData);
1283
         return { deviceList: devices };
1291
         return { deviceList: devices };
1284
     }
1292
     }
1285
-};
1293
+}
1294
+
1295
+const rtcUtils = new RTCUtils();
1286
 
1296
 
1287
-module.exports = RTCUtils;
1297
+export default rtcUtils;

+ 808
- 819
modules/xmpp/ChatRoom.js
文件差异内容过多而无法显示
查看文件


+ 1
- 1
modules/xmpp/JingleSessionPC.js 查看文件

10
 var async = require("async");
10
 var async = require("async");
11
 var XMPPEvents = require("../../service/xmpp/XMPPEvents");
11
 var XMPPEvents = require("../../service/xmpp/XMPPEvents");
12
 var RTCBrowserType = require("../RTC/RTCBrowserType");
12
 var RTCBrowserType = require("../RTC/RTCBrowserType");
13
-var RTC = require("../RTC/RTC");
13
+import RTC from "../RTC/RTC";
14
 var GlobalOnErrorHandler = require("../util/GlobalOnErrorHandler");
14
 var GlobalOnErrorHandler = require("../util/GlobalOnErrorHandler");
15
 var Statistics = require("../statistics/statistics");
15
 var Statistics = require("../statistics/statistics");
16
 
16
 

+ 1
- 1
modules/xmpp/TraceablePeerConnection.js 查看文件

2
 
2
 
3
 import { getLogger } from "jitsi-meet-logger";
3
 import { getLogger } from "jitsi-meet-logger";
4
 const logger = getLogger(__filename);
4
 const logger = getLogger(__filename);
5
-var RTC = require('../RTC/RTC');
5
+import RTC from '../RTC/RTC';
6
 var RTCBrowserType = require("../RTC/RTCBrowserType.js");
6
 var RTCBrowserType = require("../RTC/RTCBrowserType.js");
7
 var XMPPEvents = require("../../service/xmpp/XMPPEvents");
7
 var XMPPEvents = require("../../service/xmpp/XMPPEvents");
8
 var transform = require('sdp-transform');
8
 var transform = require('sdp-transform');

+ 3
- 11
modules/xmpp/xmpp.js 查看文件

2
 
2
 
3
 import { getLogger } from "jitsi-meet-logger";
3
 import { getLogger } from "jitsi-meet-logger";
4
 const logger = getLogger(__filename);
4
 const logger = getLogger(__filename);
5
-import EventEmitter from "events";
6
 import RandomUtil from "../util/RandomUtil";
5
 import RandomUtil from "../util/RandomUtil";
7
 import * as JitsiConnectionErrors from "../../JitsiConnectionErrors";
6
 import * as JitsiConnectionErrors from "../../JitsiConnectionErrors";
8
 import * as JitsiConnectionEvents from "../../JitsiConnectionEvents";
7
 import * as JitsiConnectionEvents from "../../JitsiConnectionEvents";
13
 import initPing from "./strophe.ping";
12
 import initPing from "./strophe.ping";
14
 import initRayo from "./strophe.rayo";
13
 import initRayo from "./strophe.rayo";
15
 import initStropheLogger from "./strophe.logger";
14
 import initStropheLogger from "./strophe.logger";
15
+import Listenable from "../util/Listenable";
16
 
16
 
17
 function createConnection(token, bosh = '/http-bind') {
17
 function createConnection(token, bosh = '/http-bind') {
18
     // Append token as URL param
18
     // Append token as URL param
23
     return new Strophe.Connection(bosh);
23
     return new Strophe.Connection(bosh);
24
 }
24
 }
25
 
25
 
26
-export default class XMPP {
26
+export default class XMPP extends Listenable {
27
     constructor(options, token) {
27
     constructor(options, token) {
28
-        this.eventEmitter = new EventEmitter();
28
+        super();
29
         this.connection = null;
29
         this.connection = null;
30
         this.disconnectInProgress = false;
30
         this.disconnectInProgress = false;
31
         this.connectionTimes = {};
31
         this.connectionTimes = {};
286
         return this.connection.emuc.createRoom(roomjid, null, options);
286
         return this.connection.emuc.createRoom(roomjid, null, options);
287
     }
287
     }
288
 
288
 
289
-    addListener (type, listener) {
290
-        this.eventEmitter.on(type, listener);
291
-    }
292
-
293
-    removeListener (type, listener) {
294
-        this.eventEmitter.removeListener(type, listener);
295
-    }
296
-
297
     /**
289
     /**
298
      * Returns the logs from strophe.jingle.
290
      * Returns the logs from strophe.jingle.
299
      * @returns {Object}
291
      * @returns {Object}

正在加载...
取消
保存