@neurodevs/node-lsl 15.0.0 → 16.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/__tests__/impl/LslWebSocketBridge.test.d.ts +2 -2
- package/build/__tests__/impl/LslWebSocketBridge.test.js +11 -14
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
- package/build/impl/LslWebSocketBridge.d.ts +2 -2
- package/build/impl/LslWebSocketBridge.js +9 -13
- package/build/impl/LslWebSocketBridge.js.map +1 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +3 -3
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js +4 -4
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +11 -14
- package/src/impl/LslWebSocketBridge.ts +13 -16
- package/src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts +9 -4
|
@@ -23,8 +23,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
23
23
|
private static deactivate;
|
|
24
24
|
private static destroy;
|
|
25
25
|
private static simulateOnDataCallback;
|
|
26
|
-
private static readonly
|
|
27
|
-
private static readonly
|
|
26
|
+
private static readonly listenPort;
|
|
27
|
+
private static readonly connectUrls;
|
|
28
28
|
private static readonly inletOptions;
|
|
29
29
|
private static readonly baseOptions;
|
|
30
30
|
private static LslWebSocketBridge;
|
|
@@ -50,7 +50,7 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
50
50
|
assert.isEqual(FakeStreamInlet.numCallsToDestroy, 1, 'Did not call destroy on inlet!');
|
|
51
51
|
}
|
|
52
52
|
static async createsWebSocketServer() {
|
|
53
|
-
assert.isEqualDeep(FakeWebSocketServer.callsToConstructor[0], { port: this.
|
|
53
|
+
assert.isEqualDeep(FakeWebSocketServer.callsToConstructor[0], { port: this.listenPort }, 'Did not create WebSocketServer!');
|
|
54
54
|
}
|
|
55
55
|
static async activateSendsDataToWebSocketClients() {
|
|
56
56
|
this.activate();
|
|
@@ -89,10 +89,10 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
89
89
|
}, `\n\n Cannot deactivate bridge after destroying it! \n\n Please create and activate a new instance. \n`);
|
|
90
90
|
}
|
|
91
91
|
static async createsWebSocketServerFromPort() {
|
|
92
|
-
assert.isEqual(FakeWebSocketServer.callsToConstructor[0]?.port, this.
|
|
92
|
+
assert.isEqual(FakeWebSocketServer.callsToConstructor[0]?.port, this.listenPort, 'Did not create WebSocketServer with port!');
|
|
93
93
|
}
|
|
94
94
|
static async createsSocketsFromRemoteUrls() {
|
|
95
|
-
assert.isEqualDeep(FakeWebSocket.callsToConstructor, this.
|
|
95
|
+
assert.isEqualDeep(FakeWebSocket.callsToConstructor, this.connectUrls, 'Did not create WebSockets for remote URLs!');
|
|
96
96
|
}
|
|
97
97
|
static async activateSendsDataToRemoteSockets() {
|
|
98
98
|
this.activate();
|
|
@@ -118,15 +118,15 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
118
118
|
}
|
|
119
119
|
static async destroyClosesRemoteWebSockets() {
|
|
120
120
|
this.destroy();
|
|
121
|
-
assert.isEqual(FakeWebSocket.numCallsToClose, this.
|
|
121
|
+
assert.isEqual(FakeWebSocket.numCallsToClose, this.connectUrls.length, 'Did not close remote WebSockets!');
|
|
122
122
|
}
|
|
123
123
|
static async throwsIfNeitherPortNorRemoteUrlsPassed() {
|
|
124
124
|
assert.doesThrow(() => {
|
|
125
125
|
this.LslWebSocketBridge({
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
listenPort: undefined,
|
|
127
|
+
connectUrls: undefined,
|
|
128
128
|
});
|
|
129
|
-
}, `At least one of
|
|
129
|
+
}, `At least one of listenPort or connectUrls must be provided!`);
|
|
130
130
|
}
|
|
131
131
|
static activate() {
|
|
132
132
|
this.instance.activate();
|
|
@@ -143,11 +143,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
143
143
|
FakeStreamInlet.callsToConstructor[0]?.onData(samples, timestamps);
|
|
144
144
|
return { samples, timestamps };
|
|
145
145
|
}
|
|
146
|
-
static
|
|
147
|
-
static
|
|
148
|
-
this.generateId(),
|
|
149
|
-
this.generateId(),
|
|
150
|
-
];
|
|
146
|
+
static listenPort = randomInt(1000, 5000);
|
|
147
|
+
static connectUrls = [this.generateId(), this.generateId()];
|
|
151
148
|
static inletOptions = {
|
|
152
149
|
channelNames: this.channelNames,
|
|
153
150
|
channelFormat: 'float32',
|
|
@@ -159,8 +156,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
159
156
|
};
|
|
160
157
|
static baseOptions = {
|
|
161
158
|
...this.inletOptions,
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
listenPort: this.listenPort,
|
|
160
|
+
connectUrls: this.connectUrls,
|
|
164
161
|
};
|
|
165
162
|
static LslWebSocketBridge(options) {
|
|
166
163
|
return LslWebSocketBridge.Create({ ...this.baseOptions, ...options });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslWebSocketBridge.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslWebSocketBridge.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,kBAEN,MAAM,kCAAkC,CAAA;AACzC,OAAO,eAAe,MAAM,kDAAkD,CAAA;AAE9E,OAAO,aAAa,MAAM,+CAA+C,CAAA;AACzE,OAAO,mBAAmB,MAAM,qDAAqD,CAAA;AACrF,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,mBAAmB;IAC3D,MAAM,CAAC,QAAQ,CAAuB;IAEpC,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAE/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAA2B,CAAA;IACtE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,qBAAqB;QACxC,MAAM,EACF,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,QAAQ,GACX,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAA;QAExD,MAAM,CAAC,WAAW,CACd;YACI,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,SAAS;YACT,IAAI;YACJ,IAAI;YACJ,QAAQ;SACX,EACD,IAAI,CAAC,YAAY,CACpB,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEf,MAAM,CAAC,OAAO,CACV,eAAe,CAAC,sBAAsB,EACtC,CAAC,EACD,qCAAqC,CACxC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iCAAiC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,IAAI,CAAC,UAAU,EAAE,CAAA;QAEjB,MAAM,CAAC,OAAO,CACV,eAAe,CAAC,qBAAqB,EACrC,CAAC,EACD,oCAAoC,CACvC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,0BAA0B;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,MAAM,CAAC,OAAO,CACV,eAAe,CAAC,iBAAiB,EACjC,CAAC,EACD,gCAAgC,CACnC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB;QACzC,MAAM,CAAC,WAAW,CACd,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACzC,EAAE,IAAI,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"LslWebSocketBridge.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslWebSocketBridge.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,8 +46,8 @@ export interface WebSocketBridgeOptions {
|
|
|
46
46
|
name?: string;
|
|
47
47
|
type?: string;
|
|
48
48
|
sourceId?: string;
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
listenPort?: number;
|
|
50
|
+
connectUrls?: string | string[];
|
|
51
51
|
}
|
|
52
52
|
export interface WebSocketBridgeConstructorOptions extends WebSocketBridgeOptions {
|
|
53
53
|
inlet: StreamInlet;
|
|
@@ -16,10 +16,10 @@ export default class LslWebSocketBridge {
|
|
|
16
16
|
this.throwIfNoLocalServerOrRemoteSockets();
|
|
17
17
|
}
|
|
18
18
|
static Create(options) {
|
|
19
|
-
const {
|
|
19
|
+
const { listenPort, connectUrls, ...rest } = options;
|
|
20
20
|
const inletOptions = rest;
|
|
21
|
-
const localServer = this.WebSocketServer(
|
|
22
|
-
const remoteSockets = this.createSocketsFrom(
|
|
21
|
+
const localServer = this.WebSocketServer(listenPort);
|
|
22
|
+
const remoteSockets = this.createSocketsFrom(connectUrls);
|
|
23
23
|
const inlet = this.LslStreamInlet(inletOptions, localServer, remoteSockets);
|
|
24
24
|
return new (this.Class ?? this)({
|
|
25
25
|
...options,
|
|
@@ -33,7 +33,7 @@ export default class LslWebSocketBridge {
|
|
|
33
33
|
throw new Error(this.insufficientOptionsError);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
insufficientOptionsError = `At least one of
|
|
36
|
+
insufficientOptionsError = `At least one of listenPort or connectUrls must be provided!`;
|
|
37
37
|
activate() {
|
|
38
38
|
this.throwIfBridgeIsDestroyed(this.cannotActivateMessage);
|
|
39
39
|
this.startPullingData();
|
|
@@ -95,20 +95,16 @@ export default class LslWebSocketBridge {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
static createSocketsFrom(
|
|
99
|
-
return
|
|
100
|
-
? (Array.isArray(
|
|
101
|
-
? remoteWebSocketUrls
|
|
102
|
-
: [remoteWebSocketUrls]).map((url) => this.WebSocket(url))
|
|
98
|
+
static createSocketsFrom(connectUrls) {
|
|
99
|
+
return connectUrls
|
|
100
|
+
? (Array.isArray(connectUrls) ? connectUrls : [connectUrls]).map((url) => this.WebSocket(url))
|
|
103
101
|
: undefined;
|
|
104
102
|
}
|
|
105
103
|
static WebSocket(url) {
|
|
106
104
|
return new this.WS(url);
|
|
107
105
|
}
|
|
108
|
-
static WebSocketServer(
|
|
109
|
-
return
|
|
110
|
-
? new this.WSS({ port: localWebSocketPort })
|
|
111
|
-
: undefined;
|
|
106
|
+
static WebSocketServer(listenPort) {
|
|
107
|
+
return listenPort ? new this.WSS({ port: listenPort }) : undefined;
|
|
112
108
|
}
|
|
113
109
|
static LslStreamInlet(options, localServer, remoteSockets) {
|
|
114
110
|
const onData = this.createOnDataCallback(localServer, remoteSockets);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;AAE/C,OAAO,cAGN,MAAM,qBAAqB,CAAA;AAE5B,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAC5B,MAAM,CAAC,KAAK,CAA6B;IACzC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAA;IACrB,MAAM,CAAC,GAAG,GAAG,eAAe,CAAA;IAE3B,KAAK,CAAa;IAClB,WAAW,CAAkB;IAC7B,aAAa,CAAc;IAE3B,WAAW,GAAG,KAAK,CAAA;IAE3B,YAAsB,OAA0C;QAC5D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;QAErD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAElC,IAAI,CAAC,mCAAmC,EAAE,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAA+B;QAChD,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { WebSocketBridge } from '../../impl/LslWebSocketBridge.js';
|
|
1
|
+
import { WebSocketBridge, WebSocketBridgeConstructorOptions } from '../../impl/LslWebSocketBridge.js';
|
|
2
2
|
export default class FakeWebSocketBridge implements WebSocketBridge {
|
|
3
|
-
static
|
|
3
|
+
static callsToConstructor: (WebSocketBridgeConstructorOptions | undefined)[];
|
|
4
4
|
static numCallsToActivate: number;
|
|
5
5
|
static numCallsToDeactivate: number;
|
|
6
6
|
static numCallsToDestroy: number;
|
|
7
|
-
constructor();
|
|
7
|
+
constructor(options?: WebSocketBridgeConstructorOptions);
|
|
8
8
|
activate(): void;
|
|
9
9
|
deactivate(): void;
|
|
10
10
|
destroy(): void;
|
|
@@ -2,12 +2,12 @@ import LslWebSocketBridge from '../../impl/LslWebSocketBridge.js';
|
|
|
2
2
|
import FakeWebSocket from '../WebSockets/FakeWebSocket.js';
|
|
3
3
|
import FakeWebSocketServer from '../WebSockets/FakeWebSocketServer.js';
|
|
4
4
|
export default class FakeWebSocketBridge {
|
|
5
|
-
static
|
|
5
|
+
static callsToConstructor = [];
|
|
6
6
|
static numCallsToActivate = 0;
|
|
7
7
|
static numCallsToDeactivate = 0;
|
|
8
8
|
static numCallsToDestroy = 0;
|
|
9
|
-
constructor() {
|
|
10
|
-
FakeWebSocketBridge.
|
|
9
|
+
constructor(options) {
|
|
10
|
+
FakeWebSocketBridge.callsToConstructor.push(options);
|
|
11
11
|
}
|
|
12
12
|
activate() {
|
|
13
13
|
FakeWebSocketBridge.numCallsToActivate++;
|
|
@@ -19,7 +19,7 @@ export default class FakeWebSocketBridge {
|
|
|
19
19
|
FakeWebSocketBridge.numCallsToDestroy++;
|
|
20
20
|
}
|
|
21
21
|
static resetTestDouble() {
|
|
22
|
-
this.
|
|
22
|
+
this.callsToConstructor = [];
|
|
23
23
|
this.numCallsToActivate = 0;
|
|
24
24
|
this.numCallsToDeactivate = 0;
|
|
25
25
|
this.numCallsToDestroy = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAA2C;QAC1D,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,QAAQ;QACX,mBAAmB,CAAC,kBAAkB,EAAE,CAAA;IAC5C,CAAC;IAEM,UAAU;QACb,mBAAmB,CAAC,oBAAoB,EAAE,CAAA;IAC9C,CAAC;IAEM,OAAO;QACV,mBAAmB,CAAC,iBAAiB,EAAE,CAAA;IAC3C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjC,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC3B,kBAAkB,CAAC,EAAE,GAAG,aAA4C,CAAA;QACpE,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACjC,kBAAkB,CAAC,GAAG;YAClB,mBAAwD,CAAA;QAC5D,mBAAmB,CAAC,eAAe,EAAE,CAAA;IACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -94,7 +94,7 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
94
94
|
protected static async createsWebSocketServer() {
|
|
95
95
|
assert.isEqualDeep(
|
|
96
96
|
FakeWebSocketServer.callsToConstructor[0],
|
|
97
|
-
{ port: this.
|
|
97
|
+
{ port: this.listenPort },
|
|
98
98
|
'Did not create WebSocketServer!'
|
|
99
99
|
)
|
|
100
100
|
}
|
|
@@ -176,7 +176,7 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
176
176
|
protected static async createsWebSocketServerFromPort() {
|
|
177
177
|
assert.isEqual(
|
|
178
178
|
FakeWebSocketServer.callsToConstructor[0]?.port,
|
|
179
|
-
this.
|
|
179
|
+
this.listenPort,
|
|
180
180
|
'Did not create WebSocketServer with port!'
|
|
181
181
|
)
|
|
182
182
|
}
|
|
@@ -185,7 +185,7 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
185
185
|
protected static async createsSocketsFromRemoteUrls() {
|
|
186
186
|
assert.isEqualDeep(
|
|
187
187
|
FakeWebSocket.callsToConstructor,
|
|
188
|
-
this.
|
|
188
|
+
this.connectUrls,
|
|
189
189
|
'Did not create WebSockets for remote URLs!'
|
|
190
190
|
)
|
|
191
191
|
}
|
|
@@ -246,7 +246,7 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
246
246
|
|
|
247
247
|
assert.isEqual(
|
|
248
248
|
FakeWebSocket.numCallsToClose,
|
|
249
|
-
this.
|
|
249
|
+
this.connectUrls.length,
|
|
250
250
|
'Did not close remote WebSockets!'
|
|
251
251
|
)
|
|
252
252
|
}
|
|
@@ -255,10 +255,10 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
255
255
|
protected static async throwsIfNeitherPortNorRemoteUrlsPassed() {
|
|
256
256
|
assert.doesThrow(() => {
|
|
257
257
|
this.LslWebSocketBridge({
|
|
258
|
-
|
|
259
|
-
|
|
258
|
+
listenPort: undefined,
|
|
259
|
+
connectUrls: undefined,
|
|
260
260
|
})
|
|
261
|
-
}, `At least one of
|
|
261
|
+
}, `At least one of listenPort or connectUrls must be provided!`)
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
private static activate() {
|
|
@@ -281,12 +281,9 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
281
281
|
return { samples, timestamps }
|
|
282
282
|
}
|
|
283
283
|
|
|
284
|
-
private static readonly
|
|
284
|
+
private static readonly listenPort = randomInt(1000, 5000)
|
|
285
285
|
|
|
286
|
-
private static readonly
|
|
287
|
-
this.generateId(),
|
|
288
|
-
this.generateId(),
|
|
289
|
-
]
|
|
286
|
+
private static readonly connectUrls = [this.generateId(), this.generateId()]
|
|
290
287
|
|
|
291
288
|
private static readonly inletOptions = {
|
|
292
289
|
channelNames: this.channelNames,
|
|
@@ -300,8 +297,8 @@ export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
|
300
297
|
|
|
301
298
|
private static readonly baseOptions = {
|
|
302
299
|
...this.inletOptions,
|
|
303
|
-
|
|
304
|
-
|
|
300
|
+
listenPort: this.listenPort,
|
|
301
|
+
connectUrls: this.connectUrls,
|
|
305
302
|
}
|
|
306
303
|
|
|
307
304
|
private static LslWebSocketBridge(
|
|
@@ -27,11 +27,11 @@ export default class LslWebSocketBridge implements WebSocketBridge {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
public static Create(options: WebSocketBridgeOptions) {
|
|
30
|
-
const {
|
|
30
|
+
const { listenPort, connectUrls, ...rest } = options
|
|
31
31
|
const inletOptions: StreamInletOptions = rest
|
|
32
32
|
|
|
33
|
-
const localServer = this.WebSocketServer(
|
|
34
|
-
const remoteSockets = this.createSocketsFrom(
|
|
33
|
+
const localServer = this.WebSocketServer(listenPort)
|
|
34
|
+
const remoteSockets = this.createSocketsFrom(connectUrls)
|
|
35
35
|
|
|
36
36
|
const inlet = this.LslStreamInlet(
|
|
37
37
|
inletOptions,
|
|
@@ -53,7 +53,7 @@ export default class LslWebSocketBridge implements WebSocketBridge {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
private readonly insufficientOptionsError = `At least one of
|
|
56
|
+
private readonly insufficientOptionsError = `At least one of listenPort or connectUrls must be provided!`
|
|
57
57
|
|
|
58
58
|
public activate() {
|
|
59
59
|
this.throwIfBridgeIsDestroyed(this.cannotActivateMessage)
|
|
@@ -138,12 +138,11 @@ export default class LslWebSocketBridge implements WebSocketBridge {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
private static createSocketsFrom(
|
|
142
|
-
return
|
|
143
|
-
? (Array.isArray(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
).map((url) => this.WebSocket(url))
|
|
141
|
+
private static createSocketsFrom(connectUrls?: string | string[]) {
|
|
142
|
+
return connectUrls
|
|
143
|
+
? (Array.isArray(connectUrls) ? connectUrls : [connectUrls]).map(
|
|
144
|
+
(url) => this.WebSocket(url)
|
|
145
|
+
)
|
|
147
146
|
: undefined
|
|
148
147
|
}
|
|
149
148
|
|
|
@@ -151,10 +150,8 @@ export default class LslWebSocketBridge implements WebSocketBridge {
|
|
|
151
150
|
return new this.WS(url)
|
|
152
151
|
}
|
|
153
152
|
|
|
154
|
-
private static WebSocketServer(
|
|
155
|
-
return
|
|
156
|
-
? new this.WSS({ port: localWebSocketPort })
|
|
157
|
-
: undefined
|
|
153
|
+
private static WebSocketServer(listenPort?: number) {
|
|
154
|
+
return listenPort ? new this.WSS({ port: listenPort }) : undefined
|
|
158
155
|
}
|
|
159
156
|
|
|
160
157
|
private static LslStreamInlet(
|
|
@@ -185,8 +182,8 @@ export interface WebSocketBridgeOptions {
|
|
|
185
182
|
name?: string
|
|
186
183
|
type?: string
|
|
187
184
|
sourceId?: string
|
|
188
|
-
|
|
189
|
-
|
|
185
|
+
listenPort?: number
|
|
186
|
+
connectUrls?: string | string[]
|
|
190
187
|
}
|
|
191
188
|
|
|
192
189
|
export interface WebSocketBridgeConstructorOptions
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import WebSocket, { WebSocketServer } from 'ws'
|
|
2
2
|
import LslWebSocketBridge, {
|
|
3
3
|
WebSocketBridge,
|
|
4
|
+
WebSocketBridgeConstructorOptions,
|
|
4
5
|
} from '../../impl/LslWebSocketBridge.js'
|
|
5
6
|
import FakeWebSocket from '../WebSockets/FakeWebSocket.js'
|
|
6
7
|
import FakeWebSocketServer from '../WebSockets/FakeWebSocketServer.js'
|
|
7
8
|
|
|
8
9
|
export default class FakeWebSocketBridge implements WebSocketBridge {
|
|
9
|
-
public static
|
|
10
|
+
public static callsToConstructor: (
|
|
11
|
+
| WebSocketBridgeConstructorOptions
|
|
12
|
+
| undefined
|
|
13
|
+
)[] = []
|
|
14
|
+
|
|
10
15
|
public static numCallsToActivate = 0
|
|
11
16
|
public static numCallsToDeactivate = 0
|
|
12
17
|
public static numCallsToDestroy = 0
|
|
13
18
|
|
|
14
|
-
public constructor() {
|
|
15
|
-
FakeWebSocketBridge.
|
|
19
|
+
public constructor(options?: WebSocketBridgeConstructorOptions) {
|
|
20
|
+
FakeWebSocketBridge.callsToConstructor.push(options)
|
|
16
21
|
}
|
|
17
22
|
|
|
18
23
|
public activate() {
|
|
@@ -28,7 +33,7 @@ export default class FakeWebSocketBridge implements WebSocketBridge {
|
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
public static resetTestDouble() {
|
|
31
|
-
this.
|
|
36
|
+
this.callsToConstructor = []
|
|
32
37
|
this.numCallsToActivate = 0
|
|
33
38
|
this.numCallsToDeactivate = 0
|
|
34
39
|
this.numCallsToDestroy = 0
|