Skip to content

Commit 34e5f9c

Browse files
authored
Improved WS reconnect closures and increased connection batching interval (#296)
1 parent 49cc883 commit 34e5f9c

15 files changed

Lines changed: 688 additions & 701 deletions

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"mini-css-extract-plugin": "2.7.6",
3333
"moment": "2.30.1",
3434
"node-bourbon": "^4.2.3",
35-
"openmct": "nasa/openmct#omm-r5.3.0-rc3",
35+
"openmct": "nasa/openmct#omm-r5.3.1",
3636
"printj": "1.3.1",
3737
"raw-loader": "^0.5.1",
3838
"resolve-url-loader": "5.0.0",

src/AMMOSPlugins.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ define([
9696
openmct.install(RealtimeSessions.default());
9797

9898
openmct.install(new HistoricalTelemetryPlugin(options));
99-
openmct.install(new RealtimeTelemetryPlugin(vistaTime, options));
99+
openmct.install(new RealtimeTelemetryPlugin.default(vistaTime, options));
100100
openmct.install(new TypePlugin.default());
101101
openmct.install(new TaxonomyPlugin(options.taxonomy));
102102
openmct.install(new LinkPlugin(options));
Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,23 @@
1-
/*global define*/
1+
import MCWSStreamProvider from './MCWSStreamProvider';
22

3-
define([
4-
'./MCWSStreamProvider'
5-
], function (
6-
MCWSStreamProvider
7-
) {
8-
'use strict';
9-
10-
/**
11-
* Provides real-time streaming DataProduct data.
12-
* @constructor
13-
* @augments {MCWSStreamProvider}
14-
* @memberof {vista/telemetry}
15-
*/
16-
var MCWSAlarmMessageStreamProvider = MCWSStreamProvider.extend({
17-
constructor: function (openmct, vistaTime) {
18-
MCWSStreamProvider.call(this, openmct, vistaTime);
19-
}
20-
});
21-
22-
MCWSAlarmMessageStreamProvider.prototype.getUrl = function (domainObject) {
23-
return domainObject.telemetry && domainObject.telemetry.alarmMessageStreamUrl;
24-
};
3+
/**
4+
* Provides real-time streaming DataProduct data.
5+
* @memberof {vista/telemetry}
6+
*/
7+
class MCWSAlarmMessageStreamProvider extends MCWSStreamProvider {
8+
getUrl(domainObject) {
9+
return domainObject.telemetry?.alarmMessageStreamUrl;
10+
}
2511

26-
MCWSAlarmMessageStreamProvider.prototype.getKey = function (domainObject) {
12+
getKey(domainObject) {
2713
return domainObject.telemetry.key;
28-
};
14+
}
2915

30-
MCWSAlarmMessageStreamProvider.prototype.getProperty = function (domainObject) {
16+
getProperty(domainObject) {
3117
return domainObject.telemetry.property;
32-
};
33-
34-
MCWSAlarmMessageStreamProvider.prototype.notifyWorker = function (key, value) {
35-
MCWSStreamProvider.prototype.notifyWorker.call(this, key, value);
36-
};
18+
}
3719

38-
MCWSAlarmMessageStreamProvider.prototype.subscribe = function (domainObject, callback, options) {
20+
subscribe(domainObject, callback, options) {
3921
let { telemetry: { alarmLevel = 'any'} = {}} = domainObject;
4022
alarmLevel = alarmLevel.toUpperCase();
4123
let objects = [
@@ -74,13 +56,12 @@ define([
7456
object.telemetry.values = domainObject.telemetry.values;
7557
});
7658

77-
let unsubscribers = objects.map(object => MCWSStreamProvider.prototype.subscribe.call(this, object, callback, options));
59+
let unsubscribers = objects.map(object => super.subscribe(object, callback, options));
7860

7961
return () => {
8062
unsubscribers.forEach(unsubscribe => unsubscribe());
8163
};
82-
8364
}
65+
}
8466

85-
return MCWSAlarmMessageStreamProvider;
86-
});
67+
export default MCWSAlarmMessageStreamProvider;
Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,21 @@
1-
/*global define*/
1+
import MCWSStreamProvider from './MCWSStreamProvider';
22

3-
define([
4-
'./MCWSStreamProvider'
5-
], function (
6-
MCWSStreamProvider
7-
) {
8-
'use strict';
3+
/**
4+
* Provides real-time streaming channel data.
5+
* @memberof {vista/telemetry}
6+
*/
7+
class MCWSChannelStreamProvider extends MCWSStreamProvider {
8+
getUrl(domainObject) {
9+
return domainObject.telemetry?.channelStreamUrl;
10+
}
911

10-
/**
11-
* Provides real-time streaming channel data.
12-
* @constructor
13-
* @augments {MCWSStreamProvider}
14-
* @memberof {vista/telemetry}
15-
*/
16-
var MCWSChannelStreamProvider = MCWSStreamProvider.extend({});
17-
18-
MCWSChannelStreamProvider.prototype.getUrl = function (domainObject) {
19-
return domainObject.telemetry && domainObject.telemetry.channelStreamUrl;
20-
};
21-
22-
MCWSChannelStreamProvider.prototype.getKey = function (domainObject) {
12+
getKey(domainObject) {
2313
return domainObject.telemetry.channel_id;
24-
};
14+
}
2515

26-
MCWSChannelStreamProvider.prototype.getProperty = function () {
16+
getProperty() {
2717
return 'channel_id';
28-
};
18+
}
19+
}
2920

30-
return MCWSChannelStreamProvider;
31-
});
21+
export default MCWSChannelStreamProvider;
Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,24 @@
1-
/*global define*/
1+
import MCWSStreamProvider from './MCWSStreamProvider';
22

3-
define([
4-
'./MCWSStreamProvider'
5-
], function (
6-
MCWSStreamProvider
7-
) {
8-
'use strict';
3+
/**
4+
* Provides real-time streaming CommandEvent data.
5+
* @memberof {vista/telemetry}
6+
*/
7+
class MCWSCommandStreamProvider extends MCWSStreamProvider {
8+
getUrl(domainObject) {
9+
return domainObject.telemetry?.commandEventStreamUrl;
10+
}
911

10-
/**
11-
* Provides real-time streaming CommandEvent data.
12-
* @constructor
13-
* @augments {MCWSStreamProvider}
14-
* @memberof {vista/telemetry}
15-
*/
16-
var MCWSCommandStreamProvider = MCWSStreamProvider.extend({});
17-
18-
MCWSCommandStreamProvider.prototype.getUrl = function (domainObject) {
19-
return domainObject.telemetry && domainObject.telemetry.commandEventStreamUrl;
20-
};
21-
22-
MCWSCommandStreamProvider.prototype.getKey = function (domainObject) {
12+
getKey() {
2313
// We return undefined so that we can match on undefined properties.
2414
return undefined;
25-
};
15+
}
2616

27-
MCWSCommandStreamProvider.prototype.getProperty = function () {
17+
getProperty() {
2818
// We just want something that returns undefined so it matches the
2919
// key above. Hacky.
3020
return 'some_undefined_property';
31-
};
21+
}
22+
}
3223

33-
return MCWSCommandStreamProvider;
34-
});
24+
export default MCWSCommandStreamProvider;
Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,31 @@
1-
/*global define*/
2-
3-
define([
4-
'./MCWSStreamProvider'
5-
], function (
6-
MCWSStreamProvider
7-
) {
8-
'use strict';
9-
10-
/**
11-
* Provides real-time streaming DataProduct data.
12-
* @constructor
13-
* @augments {MCWSStreamProvider}
14-
* @memberof {vista/telemetry}
15-
*/
16-
var MCWSDataProductStreamProvider = MCWSStreamProvider.extend({
17-
constructor: function (openmct, vistaTime, options) {
18-
this.options = options;
19-
MCWSStreamProvider.call(this, openmct, vistaTime);
20-
}
21-
});
1+
import MCWSStreamProvider from './MCWSStreamProvider';
2+
3+
/**
4+
* Provides real-time streaming DataProduct data.
5+
* @memberof {vista/telemetry}
6+
*/
7+
class MCWSDataProductStreamProvider extends MCWSStreamProvider {
8+
constructor(openmct, vistaTime, options) {
9+
super(openmct, vistaTime);
10+
this.options = options;
11+
}
2212

23-
MCWSDataProductStreamProvider.prototype.getUrl = function (domainObject) {
24-
return domainObject.telemetry && domainObject.telemetry.dataProductStreamUrl;
25-
};
13+
getUrl(domainObject) {
14+
return domainObject.telemetry?.dataProductStreamUrl;
15+
}
2616

27-
MCWSDataProductStreamProvider.prototype.getKey = function (domainObject) {
17+
getKey() {
2818
// We return undefined so that we can match on undefined properties.
2919
return undefined;
30-
};
20+
}
3121

32-
MCWSDataProductStreamProvider.prototype.getProperty = function () {
22+
getProperty() {
3323
// We just want something that returns undefined so it matches the
3424
// key above. Hacky.
3525
return 'some_undefined_property';
36-
};
26+
}
3727

38-
MCWSDataProductStreamProvider.prototype.subscribe = function (domainObject, callback, options) {
28+
subscribe(domainObject, callback, options) {
3929
function wrappedCallback(datum) {
4030
let sessionId = datum.session_id;
4131

@@ -53,18 +43,18 @@ define([
5343
callback(datum);
5444
}
5545

56-
return MCWSStreamProvider.prototype.subscribe.call(this, domainObject, wrappedCallback, options);
46+
return super.subscribe(domainObject, wrappedCallback, options);
5747
}
5848

59-
MCWSDataProductStreamProvider.prototype.notifyWorker = function (key, value) {
49+
notifyWorker(key, value) {
6050
if (key === 'subscribe' && this.options.realtimeProductAPIDs
6151
&& value.mcwsVersion === 3.2) {
6252
value.extraFilterTerms = {
6353
apid: '(' + this.options.realtimeProductAPIDs.join(',') + ')'
6454
};
6555
}
66-
MCWSStreamProvider.prototype.notifyWorker.call(this, key, value);
67-
};
56+
super.notifyWorker(key, value);
57+
}
58+
}
6859

69-
return MCWSDataProductStreamProvider;
70-
});
60+
export default MCWSDataProductStreamProvider;
Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,38 @@
1-
/*global define*/
2-
3-
define([
4-
'./MCWSStreamProvider',
5-
'lodash'
6-
], function (
7-
MCWSStreamProvider,
8-
_
9-
) {
10-
'use strict';
1+
import MCWSStreamProvider from './MCWSStreamProvider';
112

3+
/**
4+
* Provides real-time streaming EVR data by level.
5+
* @memberof {vista/telemetry}
6+
*/
7+
class MCWSEVRLevelStreamProvider extends MCWSStreamProvider {
128
/**
13-
* Provides real-time streaming EVR data by level.
14-
* @constructor
15-
* @augments {MCWSStreamProvider}
16-
* @memberof {vista/telemetry}
9+
* Get the URL for streaming data for this domain object
10+
* @param {Object} domainObject The domain object
11+
* @returns {String} The URL to use for streaming
1712
*/
18-
var MCWSEVRLevelStreamProvider = MCWSStreamProvider.extend({});
19-
20-
MCWSEVRLevelStreamProvider.prototype.getUrl = function (domainObject) {
21-
if (domainObject.telemetry && domainObject.telemetry.level) {
13+
getUrl(domainObject) {
14+
if (domainObject.telemetry?.evrStreamUrl) {
2215
return domainObject.telemetry.evrStreamUrl;
2316
}
24-
};
17+
}
2518

26-
MCWSEVRLevelStreamProvider.prototype.getProperty = function (domainObject) {
19+
/**
20+
* Get the property to use for this stream
21+
* @param {Object} domainObject The domain object
22+
* @returns {String} The property name
23+
*/
24+
getProperty() {
2725
return 'level';
28-
};
26+
}
2927

30-
MCWSEVRLevelStreamProvider.prototype.getKey = function (domainObject) {
28+
/**
29+
* Get the key to use for this stream
30+
* @param {Object} domainObject The domain object
31+
* @returns {String} The key
32+
*/
33+
getKey(domainObject) {
3134
return domainObject.telemetry.level;
32-
};
35+
}
36+
}
3337

34-
return MCWSEVRLevelStreamProvider;
35-
});
38+
export default MCWSEVRLevelStreamProvider;

0 commit comments

Comments
 (0)