@nsshunt/stsappframework 3.1.231 → 3.1.233

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.
Files changed (34) hide show
  1. package/build.sh +0 -2
  2. package/dist/commonTypes.js +2 -38
  3. package/dist/commonTypes.js.map +1 -1
  4. package/dist/process/processbase.js.map +1 -1
  5. package/dist/process/serverprocessbase.js +39 -23
  6. package/dist/process/serverprocessbase.js.map +1 -1
  7. package/dist/process/singleprocessbase.js.map +1 -1
  8. package/dist/vitesttesting/appConfig.js +3 -1
  9. package/dist/vitesttesting/appConfig.js.map +1 -1
  10. package/dist/vitesttesting/appSingleWSS.js +100 -49
  11. package/dist/vitesttesting/appSingleWSS.js.map +1 -1
  12. package/dist/vitesttesting/singleservertest.test.js +155 -63
  13. package/dist/vitesttesting/singleservertest.test.js.map +1 -1
  14. package/package.json +4 -2
  15. package/src/commonTypes.ts +7 -85
  16. package/src/process/processbase.ts +5 -3
  17. package/src/process/serverprocessbase.ts +44 -23
  18. package/src/process/singleprocessbase.ts +1 -2
  19. package/src/vitesttesting/appConfig.ts +3 -1
  20. package/src/vitesttesting/appSingleWSS.ts +121 -58
  21. package/src/vitesttesting/singleservertest.test.ts +187 -70
  22. package/src/vitesttesting/wsevents.ts +12 -1
  23. package/types/commonTypes.d.ts +3 -54
  24. package/types/commonTypes.d.ts.map +1 -1
  25. package/types/process/processbase.d.ts +4 -2
  26. package/types/process/processbase.d.ts.map +1 -1
  27. package/types/process/serverprocessbase.d.ts +1 -1
  28. package/types/process/serverprocessbase.d.ts.map +1 -1
  29. package/types/process/singleprocessbase.d.ts.map +1 -1
  30. package/types/vitesttesting/appConfig.d.ts.map +1 -1
  31. package/types/vitesttesting/appSingleWSS.d.ts +2 -3
  32. package/types/vitesttesting/appSingleWSS.d.ts.map +1 -1
  33. package/types/vitesttesting/wsevents.d.ts +12 -1
  34. package/types/vitesttesting/wsevents.d.ts.map +1 -1
@@ -12,14 +12,15 @@ const appSingleWSS_1 = require("./appSingleWSS");
12
12
  const appConfig_1 = require("./appConfig");
13
13
  const stsconfig_1 = require("@nsshunt/stsconfig");
14
14
  const vitest_1 = require("vitest");
15
- const stsobservability_1 = require("@nsshunt/stsobservability");
16
- const index_1 = require("./../index");
15
+ const stssocketioutils_1 = require("@nsshunt/stssocketioutils");
16
+ const stssocketioutils_2 = require("@nsshunt/stssocketioutils");
17
17
  //import { GenericContainer, Network, Wait } from "testcontainers";
18
18
  const testcontainers_1 = require("testcontainers");
19
19
  (0, vitest_1.describe)("Single Server Test", () => {
20
20
  let app = null;
21
21
  let ioRedisMessageProcessorUrl = '';
22
22
  let ioRedisContainer = null;
23
+ let network;
23
24
  const agentManager = new stsconfig_1.AgentManager({});
24
25
  const endpoint = 'https://localhost';
25
26
  const socketUtilsoptions = {
@@ -32,8 +33,8 @@ const testcontainers_1 = require("testcontainers");
32
33
  rejectUnauthorized: stsconfig_1.goptions.isProduction // Allows self signed certs in non production mode(s)
33
34
  }
34
35
  };
35
- const socketUtils = new stsobservability_1.SocketIoClientHelper(socketUtilsoptions);
36
- const instrumentManagerAddress = `${endpoint}:${stsconfig_1.goptions.rest01port}/${index_1.STSNamespace.STSMonitor}/`;
36
+ const socketUtils = new stssocketioutils_1.SocketIoClientHelper(socketUtilsoptions);
37
+ const instrumentManagerAddress = `${endpoint}:${stsconfig_1.goptions.rest01port}/${stssocketioutils_2.STSNamespace.STSMonitor}/`;
37
38
  const LogInfoMessage = (message) => console.log(chalk_1.default.green(`info: ${message}`));
38
39
  const LogErrorMessage = (message) => console.error(chalk_1.default.red(`error: ${message}`));
39
40
  const LogDebugMessage = (message) => console.log(chalk_1.default.blue(`debug: ${message}`));
@@ -76,29 +77,37 @@ const testcontainers_1 = require("testcontainers");
76
77
  return null;
77
78
  }
78
79
  };
80
+ const StartNetwork = async () => {
81
+ network = await new testcontainers_1.Network().start();
82
+ };
83
+ const StopNetwork = async () => {
84
+ await network.stop();
85
+ };
79
86
  const StartRedis = async () => {
80
87
  ioRedisContainer = await new testcontainers_1.GenericContainer("redis/redis-stack-server")
81
88
  .withEnvironment({
82
89
  REDIS_ARGS: "--save \"\" --appendonly no",
83
90
  })
84
91
  .withExposedPorts(6379)
85
- //.withNetwork(this.#network)
86
- //.withNetworkAliases("redisstackserver")
92
+ .withNetwork(network)
93
+ .withNetworkAliases("redisstackserver")
87
94
  //.withWaitStrategy(Wait.forLogMessage(`Ready to accept connections tcp`))
88
95
  .start();
89
96
  ioRedisMessageProcessorUrl = `redis://${ioRedisContainer.getHost()}:${ioRedisContainer.getMappedPort(6379)}`;
90
97
  await (0, stsutils_1.Sleep)(2000);
91
98
  //expect(goptions.imRedisMessageProcessorUrl).toEqual('redis://localhost:6379');
92
99
  // IM_REDIS_MESSAGE_PROCESSOR_URL
93
- console.log(chalk_1.default.green(`redis/redis-stack-server Started. Server Details: ioRedisMessageProcessorUrl: [${ioRedisMessageProcessorUrl}]`));
100
+ console.log(chalk_1.default.green(`redis/redis-stack-server Started. docker [${ioRedisMessageProcessorUrl}]`));
94
101
  };
95
102
  const StopRedis = async () => {
96
103
  await ioRedisContainer.stop();
97
104
  await (0, stsutils_1.Sleep)(200);
98
105
  };
99
106
  (0, vitest_1.beforeAll)(async () => {
107
+ await StartNetwork();
100
108
  await StartRedis();
101
109
  process.env.IM_REDIS_MESSAGE_PROCESSOR_URL = ioRedisMessageProcessorUrl;
110
+ process.env.SOCKET_IO_REDIS_ADAPTOR_URL = ioRedisMessageProcessorUrl;
102
111
  (0, stsconfig_1.$ResetOptions)();
103
112
  const appOptions = (0, appConfig_1.ServiceConfigOptions)(false, true);
104
113
  appOptions.processExitOnTerminate = false;
@@ -110,9 +119,11 @@ const testcontainers_1 = require("testcontainers");
110
119
  agentManager.Terminate();
111
120
  await (0, stsutils_1.Sleep)(500);
112
121
  await app?.TerminateApplication();
113
- await (0, stsutils_1.Sleep)(1000);
122
+ await (0, stsutils_1.Sleep)(2000);
114
123
  app = null;
115
124
  await StopRedis();
125
+ await StopNetwork();
126
+ await (0, stsutils_1.Sleep)(2000);
116
127
  }, 120000);
117
128
  (0, vitest_1.test)('Testing Module', async () => {
118
129
  vitest_1.expect.assertions(1);
@@ -129,66 +140,147 @@ const testcontainers_1 = require("testcontainers");
129
140
  }
130
141
  }, 10000);
131
142
  (0, vitest_1.test)('client socket testing', async () => {
132
- vitest_1.expect.assertions(8);
133
- let complete = false;
134
- const socket = socketUtils.SetupClientSideSocket('STSUITerm',
135
- // The address defines the namespace to connect to (i.e. io.of('/address'))
136
- instrumentManagerAddress,
137
- // Connected call back
138
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
139
- (socket) => {
140
- LogDebugMessage(chalk_1.default.green(`connected - 1`));
141
- (0, vitest_1.expect)(1).toEqual(1);
142
- },
143
- // Custom Events
144
- (socket) => {
145
- socket.on('subscribeAck', (data) => {
146
- LogDebugMessage(chalk_1.default.yellow('subscribeAck'));
147
- (0, vitest_1.expect)(data.data).toMatch(/(subject01|subject02)/i);
148
- });
149
- socket.on('unsubscribeAck', (data) => {
150
- LogDebugMessage(chalk_1.default.yellow('unsubscribeAck'));
151
- (0, vitest_1.expect)(data.data).toMatch(/(subject02)/i);
143
+ vitest_1.expect.assertions(29);
144
+ let connectCount = 0;
145
+ let subscribeAckCount = 0;
146
+ let unsubscribeAckCount = 0;
147
+ let subscribeKeepAliveAckCount = 0;
148
+ let doneAckCount = 0;
149
+ const SetupClient = async (clientName, joinRooms) => {
150
+ const socket = socketUtils.SetupClientSideSocket('STSUITerm',
151
+ // The address defines the namespace to connect to (i.e. io.of('/address'))
152
+ instrumentManagerAddress,
153
+ // Connected call back
154
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
155
+ (socket) => {
156
+ LogDebugMessage(chalk_1.default.green(`${clientName}: connected - 1`));
157
+ connectCount++;
158
+ (0, vitest_1.expect)(1).toEqual(1);
159
+ },
160
+ // Custom Events
161
+ (socket) => {
162
+ socket.on('subscribeAck', (data) => {
163
+ LogDebugMessage(chalk_1.default.yellow(`${clientName}: subscribeAck`));
164
+ subscribeAckCount++;
165
+ (0, vitest_1.expect)(data.data).toMatch(/(subject01|subject02)/i);
166
+ });
167
+ socket.on('unsubscribeAck', (data) => {
168
+ unsubscribeAckCount++;
169
+ LogDebugMessage(chalk_1.default.yellow(`${clientName}: unsubscribeAck`));
170
+ (0, vitest_1.expect)(data.data).toMatch(/(subject02)/i);
171
+ });
172
+ socket.on('subscribeKeepAliveAck', (data) => {
173
+ subscribeKeepAliveAckCount++;
174
+ LogDebugMessage(chalk_1.default.yellow(`${clientName}: subscribeKeepAliveAck`));
175
+ (0, vitest_1.expect)(data.data).toMatch(/(ok)/i);
176
+ });
177
+ socket.on('doneAck', async () => {
178
+ doneAckCount++;
179
+ LogDebugMessage(chalk_1.default.yellow(`${clientName}: doneAck`));
180
+ (0, vitest_1.expect)(1).toEqual(1);
181
+ });
182
+ socket.on('compute3', async (arg, cb) => {
183
+ LogDebugMessage(chalk_1.default.yellow(`${clientName}: compute3`));
184
+ cb({ arg, clientName });
185
+ });
186
+ socket.on('ServiceCommandGetThreads', async (arg) => {
187
+ LogDebugMessage(chalk_1.default.yellow(`${clientName}: ServiceCommandGetThreads: [${JSON.stringify(arg)}]`));
188
+ });
189
+ socket.on('ServiceCommandGetThreadsEx', async (arg, cb) => {
190
+ LogDebugMessage(chalk_1.default.green(`${clientName}: ServiceCommandGetThreadsEx: [${JSON.stringify(arg)}]`));
191
+ cb({ arg, clientName });
192
+ });
193
+ socket.on('GetThreadDetailsFromService', async (arg, cb) => {
194
+ LogDebugMessage(chalk_1.default.green(`${clientName}: ServiceCommandGetThreadsEx: [${JSON.stringify(arg)}]`));
195
+ cb({
196
+ threadData: { id: 'someid', extraData: 'someextradata' },
197
+ arg,
198
+ clientName
199
+ });
200
+ });
201
+ }, (error) => {
202
+ LogErrorMessage(`${clientName}: SetupClientSideSocket call back: [${error}]`);
152
203
  });
153
- socket.on('subscribeKeepAliveAck', (data) => {
154
- LogDebugMessage(chalk_1.default.yellow('subscribeKeepAliveAck'));
155
- (0, vitest_1.expect)(data.data).toMatch(/(ok)/i);
204
+ socket.emit('__STSjoinRoom', joinRooms);
205
+ socket.emit('__STSjoinRoom', ['room1']).emit('__STSjoinRoom', ['room2']);
206
+ socket.emit('subscribe', { data: 'subject01 ' });
207
+ socket.emit('subscribe', { data: 'subject02 ' });
208
+ socket.emit('unsubscribe', { data: 'subject02 ' });
209
+ socket.emit('subscribeKeepAlive', { data: 'ok' });
210
+ socket.timeout(250).emit('compute', 10, (err, arg) => {
211
+ if (err) {
212
+ LogInfoMessage(err);
213
+ }
214
+ else {
215
+ console.log(`${clientName}: compute: [${chalk_1.default.magenta(JSON.stringify(arg))}]`);
216
+ (0, vitest_1.expect)(arg).toEqual('20');
217
+ }
156
218
  });
157
- socket.on('doneAck', async () => {
158
- LogDebugMessage(chalk_1.default.yellow('doneAck'));
159
- (0, vitest_1.expect)(1).toEqual(1);
160
- await (0, stsutils_1.Sleep)(500);
161
- complete = true;
219
+ socket.timeout(250).emit('compute2', 10, (err, arg) => {
220
+ if (err) {
221
+ LogInfoMessage(err);
222
+ }
223
+ else {
224
+ console.log(`${clientName}: compute2: [${chalk_1.default.magenta(JSON.stringify(arg))}]`);
225
+ (0, vitest_1.expect)(arg.data).toEqual(20);
226
+ }
162
227
  });
163
- }, (error) => {
164
- LogErrorMessage(`SetupClientSideSocket call back: [${error}]`);
165
- });
166
- socket.emit('__STSjoinRoom', ['room1']).emit('__STSjoinRoom', ['room2']);
167
- socket.emit('subscribe', { data: 'subject01 ' });
168
- socket.emit('subscribe', { data: 'subject02 ' });
169
- socket.emit('unsubscribe', { data: 'subject02 ' });
170
- socket.emit('subscribeKeepAlive', { data: 'ok' });
171
- socket.emit('__STSsendToRoom', ['room3'], { command: 'doneAck', payload: { somedata: 1 } });
172
- //socket.emit('done');
173
- socket.timeout(250).emit('compute', 10, (err, arg) => {
174
- if (err) {
175
- LogInfoMessage(err);
176
- }
177
- else {
178
- (0, vitest_1.expect)(arg).toEqual('20');
179
- }
180
- });
181
- socket.timeout(250).emit('compute2', 10, (err, arg) => {
182
- if (err) {
183
- LogInfoMessage(err);
184
- }
185
- else {
186
- (0, vitest_1.expect)(arg.data).toEqual(20);
187
- }
228
+ return socket;
229
+ };
230
+ const client1 = await SetupClient('client1', ['service']);
231
+ const client2 = await SetupClient('client2', ['service', 'service_instance1']);
232
+ const client3 = await SetupClient('client3', ['service', 'service_instance2']);
233
+ await (0, stsutils_1.Sleep)(1000);
234
+ //client1.emit('broadcast');
235
+ //client2.emit('__STSsendToRoom', ['service'], { command: 'ServiceCommandGetThreads', payload: { room: 'service', somedata: 1 }});
236
+ client2.emit('__STSsendToRoomWithCB', ['service_instance1'], { command: 'ServiceCommandGetThreadsEx', payload: { room: 'service_instance1', somedata: 1 } });
237
+ client3.emit('GetThreadDetails', {
238
+ room: 'service_instance1',
239
+ threadInput: 500
240
+ }, (data) => {
241
+ console.log(chalk_1.default.magenta(JSON.stringify(data)));
188
242
  });
189
- while (!complete) {
243
+ const start = performance.now();
244
+ const promArray = [];
245
+ for (let i = 0; i < 20; i++) {
246
+ const prom = new Promise((res, rej) => {
247
+ try {
248
+ client1.emit('GetThreadDetails', {
249
+ room: 'service',
250
+ threadInput: 500,
251
+ iteration: i
252
+ }, (data) => {
253
+ console.log(chalk_1.default.rgb(100, 240, 20)(JSON.stringify(data)));
254
+ res(data);
255
+ });
256
+ }
257
+ catch (error) {
258
+ rej(error);
259
+ }
260
+ });
261
+ promArray.push(prom);
262
+ }
263
+ await Promise.all(promArray);
264
+ const end = performance.now();
265
+ console.log(chalk_1.default.magenta(`Total Time: [${end - start}]`));
266
+ await (0, stsutils_1.Sleep)(1000);
267
+ client1.emit('__STSsendToRoom', ['room3'], { command: 'doneAck', payload: { somedata: 1 } });
268
+ //while (!complete) {
269
+ while (doneAckCount < 3) {
190
270
  await (0, stsutils_1.Sleep)(100);
191
271
  }
192
- }, 3000);
272
+ await (0, stsutils_1.Sleep)(500);
273
+ console.log(chalk_1.default.green(`connectCount: [${connectCount}]`));
274
+ console.log(chalk_1.default.green(`subscribeAckCount: [${subscribeAckCount}]`));
275
+ console.log(chalk_1.default.green(`unsubscribeAckCount: [${unsubscribeAckCount}]`));
276
+ console.log(chalk_1.default.green(`subscribeKeepAliveAckCount: [${subscribeKeepAliveAckCount}]`));
277
+ console.log(chalk_1.default.green(`doneAckCount: [${doneAckCount}]`));
278
+ (0, vitest_1.expect)(connectCount).toEqual(3);
279
+ (0, vitest_1.expect)(subscribeAckCount).toEqual(6);
280
+ (0, vitest_1.expect)(unsubscribeAckCount).toEqual(3);
281
+ (0, vitest_1.expect)(subscribeKeepAliveAckCount).toEqual(3);
282
+ (0, vitest_1.expect)(doneAckCount).toEqual(3);
283
+ console.log(chalk_1.default.green(`All Done...`));
284
+ }, 60000);
193
285
  });
194
286
  //# sourceMappingURL=singleservertest.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"singleservertest.test.js","sourceRoot":"","sources":["../../src/vitesttesting/singleservertest.test.ts"],"names":[],"mappings":";;;;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,kDAA0B;AAE1B,kDAAyD;AAEzD,gDAAyC;AACzC,6DAA6D;AAE7D,iDAA6C;AAE7C,2CAAkD;AAElD,kDAA0F;AAE1F,mCAAqE;AAErE,gEAA8F;AAE9F,sCAAyC;AAKzC,mEAAmE;AACnE,mDAAkD;AAElD,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAEhC,IAAI,GAAG,GAAwB,IAAI,CAAC;IACpC,IAAI,0BAA0B,GAAG,EAAE,CAAC;IACpC,IAAI,gBAAgB,GAAQ,IAAI,CAAC;IAEjC,MAAM,YAAY,GAAG,IAAI,wBAAY,CAAC,EAAE,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,mBAAmB,CAAA;IAEpC,MAAM,kBAAkB,GAAiC;QACrD,YAAY,EAAE;YACV,SAAS,EAAE,oBAAQ,CAAC,SAAS;YAC7B,UAAU,EAAE,oBAAQ,CAAC,UAAU;YAC/B,eAAe,EAAE,oBAAQ,CAAC,eAAe;YACzC,cAAc,EAAE,oBAAQ,CAAC,cAAc;YACvC,OAAO,EAAE,KAAK,EAAE,WAAW;YAC3B,kBAAkB,EAAE,oBAAQ,CAAC,YAAY,CAAC,qDAAqD;SAClG;KACJ,CAAA;IAED,MAAM,WAAW,GAAG,IAAI,uCAAoB,CAA6C,kBAAkB,CAAC,CAAC;IAE7G,MAAM,wBAAwB,GAC1B,GAAG,QAAQ,IAAI,oBAAQ,CAAC,UAAU,IAAI,oBAAY,CAAC,UAAU,GAAG,CAAC;IAErE,MAAM,cAAc,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,eAAe,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IAEvF,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE;QAC/B,eAAe,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAe,KAAK,CAAC;YACrC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACtB,eAAe,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5F,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAC9B,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC;gBACD,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC3B,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvF,CAAC;gBACD,IAAI,CAAC;oBACD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;wBAC7B,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3F,CAAC;gBACL,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACvB,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,4CAA4C,UAAU,GAAG,CAAC,CAAC,CAAC;gBACzF,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,eAAe,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC/E,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,IAAmC,EAAE;QACzD,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,oBAAQ,CAAC,UAAU,GAAG,oBAAQ,CAAC,aAAa,UAAU,CAAC;QAClF,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAA,eAAK,EAAC,IAAI,0BAAc,CAAC,GAAG,EAAE,KAAK,CAAC;iBACpD,kBAAkB,EAAE;iBACpB,gBAAgB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC1B,gBAAgB,GAAG,MAAM,IAAI,iCAAgB,CAAC,0BAA0B,CAAC;aACpE,eAAe,CAAC;YACb,UAAU,EAAE,6BAA6B;SAC5C,CAAC;aACD,gBAAgB,CAAC,IAAI,CAAC;YACvB,6BAA6B;YAC7B,yCAAyC;YACzC,0EAA0E;aACzE,KAAK,EAAE,CAAC;QAEb,0BAA0B,GAAG,WAAW,gBAAgB,CAAC,OAAO,EAAE,IAAI,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAE7G,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC;QAClB,gFAAgF;QAChF,iCAAiC;QAEjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kFAAkF,0BAA0B,GAAG,CAAC,CAAC,CAAC;IAC9I,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAA;IAED,IAAA,kBAAS,EAAC,KAAK,IAAI,EAAE;QAEjB,MAAM,UAAU,EAAE,CAAC;QAEnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,0BAA0B,CAAC;QAExE,IAAA,yBAAa,GAAE,CAAC;QAEhB,MAAM,UAAU,GAAG,IAAA,gCAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrD,UAAU,CAAC,sBAAsB,GAAG,KAAK,CAAC;QAC1C,GAAG,GAAG,IAAI,2BAAY,CAAC,UAAU,CAAC,CAAA;QAClC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,MAAM,CAAC,CAAC;IAEX,IAAA,iBAAQ,EAAC,KAAK,IAAI,EAAE;QAChB,YAAY,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,EAAE,oBAAoB,EAAE,CAAC;QAClC,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC;QAClB,GAAG,GAAG,IAAI,CAAC;QAEX,MAAM,SAAS,EAAE,CAAC;IACtB,CAAC,EAAE,MAAM,CAAC,CAAC;IAEX,IAAA,aAAI,EAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,eAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,eAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YACpC,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;IACL,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,aAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,eAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAAC,WAAW;QACxD,2EAA2E;QAC3E,wBAAwB;QACxB,sBAAsB;QACtB,8DAA8D;QAC9D,CAAC,MAA0D,EAAE,EAAE;YAC3D,eAAe,CAAC,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9C,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,gBAAgB;QAChB,CAAC,MAA0D,EAAE,EAAE;YAC3D,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAS,EAAE,EAAE;gBACpC,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAS,EAAE,EAAE;gBACtC,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAChD,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,IAAS,EAAE,EAAE;gBAC7C,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACvD,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBAC5B,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC;QACP,CAAC,EACD,CAAC,KAAY,EAAE,EAAE;YACb,eAAe,CAAC,qCAAqC,KAAK,GAAG,CAAC,CAAC;QACnE,CAAC,CACJ,CAAA;QAED,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAC,CAAC,CAAA;QAC1F,sBAAsB;QAEtB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjD,IAAI,GAAG,EAAE,CAAC;gBACN,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClD,IAAI,GAAG,EAAE,CAAC;gBACN,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IAEL,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"singleservertest.test.js","sourceRoot":"","sources":["../../src/vitesttesting/singleservertest.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.1.231",
3
+ "version": "3.1.233",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -47,9 +47,11 @@
47
47
  "dependencies": {
48
48
  "@nsshunt/stsconfig": "^1.25.167",
49
49
  "@nsshunt/stsdatamanagement": "^1.18.83",
50
- "@nsshunt/stsobservability": "^1.0.80",
50
+ "@nsshunt/stsobservability": "^1.0.84",
51
+ "@nsshunt/stssocketioutils": "^1.0.3",
51
52
  "@nsshunt/stsutils": "^1.16.91",
52
53
  "@socket.io/cluster-adapter": "^0.2.2",
54
+ "@socket.io/redis-adapter": "^8.3.0",
53
55
  "@socket.io/redis-streams-adapter": "^0.2.2",
54
56
  "@types/on-headers": "^1.0.3",
55
57
  "@types/pidusage": "^2.0.5",
@@ -1,15 +1,19 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
2
- import { Server, Socket, Namespace } from "socket.io";
3
2
  import express from 'express'
4
3
 
5
4
  import { JSONObject, ISTSLogger, ModelDelimeter, CheckValidChar } from "@nsshunt/stsutils"
6
- import { PublishInstrumentController, InstrumentDefinitions, IContextBase, InstrumentBaseTelemetry, Gauge,
7
- STSDefaultClientToServerEvents, STSDefaultServerToClientEvents } from '@nsshunt/stsobservability'
5
+ import { PublishInstrumentController, InstrumentDefinitions,
6
+ IContextBase, InstrumentBaseTelemetry, Gauge} from '@nsshunt/stsobservability'
7
+
8
+ import { STSDefaultClientToServerEvents, STSDefaultServerToClientEvents } from '@nsshunt/stssocketioutils'
9
+
8
10
  import { IDBAccessLayer } from '@nsshunt/stsdatamanagement'
9
11
  import { TinyEmitter } from "tiny-emitter";
10
12
 
11
13
  import { Worker, Address } from 'node:cluster'
12
14
 
15
+ import { ISocketIoServerHelper } from '@nsshunt/stssocketioutils'
16
+
13
17
  export interface IServiceProcessContext extends IContextBase {
14
18
  serviceId?: string // Service name and the service version
15
19
 
@@ -171,88 +175,6 @@ export interface IWorkerProcessBase extends IServerProcessBase {
171
175
 
172
176
  // -----------------------------------------------------------------------------
173
177
 
174
- export type ServerEventCb = (socket: any, data: any) => void
175
-
176
- export interface ServerSocketEvent {
177
- serverEventName: string,
178
- serverEventCb: ServerEventCb
179
- }
180
-
181
- export enum STSNamespace {
182
- STSMonitor = 'stsinstrumentmanager/stsmonitor',
183
- STSControl = 'stsinstrumentmanager/stscontrol'
184
- }
185
-
186
- export enum STSRoom {
187
- // STSMonitor rooms
188
- STSInstrumentDataRoom = 'stsinstrumentdataroom', // This room is for all instrument data messages
189
- STSInstrumentDataSubscriptionRoom = 'stsinstrumentdatasubscriptionroom', // This room is only for subscribed instrument data messages
190
-
191
- // STSControl rooms
192
- STSRunnerRoom = 'stsrunnerroom',
193
- STSNodeRunnerRoom = 'stsnoderunnerroom'
194
- }
195
-
196
- export enum STSEvent {
197
- // STSInstrumentData
198
- STSInstrumentData = 'stsinstrumentdata',
199
- STSSubInstrumentData = 'stssubinstrumentdata', // sub-scribed instrument data. This only outputs the nodes that have been subscribed by the client(s).
200
- STSResetInstrumentData = 'stsresetinstrumentdata',
201
-
202
- STSStartLoggingInstrumentData = 'stsStartLoggingInstrumentData',
203
- STSStopLoggingInstrumentData = 'stsStopLoggingInstrumentData',
204
-
205
- // STSRunner events
206
- STSStart = 'stsstart', // Start a test run with options as payload.
207
- STSStop = 'stsstop', // Stop test run(s).
208
- STSPause = 'stspause', // Pause test run(s).
209
- STSResume = 'stsresume', // Resume test run(s).
210
- STSTerminate = 'ststerminate', // Terminate runner instances and exit applications.
211
- // This may also be uysed to force trigger self healing (i.e. auto re-start) when
212
- // running within a container orchestrator such as K8, K3 or Docker Swarm.
213
- STSUpdateStaticConfig = 'stsupdatestaticconfig', // Update base configuration. Options as payload.
214
- STSUpdateDynamicConfig = 'stsupdatedynamicconfig', // Update running configuration. This is used
215
- // to control the runnning behaviour of test(s) in-flight. Options as payload.
216
-
217
- STSSendToRoom = 'sendToRoom',
218
-
219
- // Standard socket events
220
- connect = 'connect'
221
- }
222
-
223
- // https://socket.io/docs/v4/typescript/
224
-
225
- export interface InterServerEvents {
226
- ping: () => void;
227
- }
228
-
229
- export interface STSSocketIONamespace {
230
- namespace: string
231
- pid: number
232
- socketionamespace: Namespace<STSDefaultClientToServerEvents, STSDefaultServerToClientEvents, InterServerEvents>
233
- }
234
-
235
- export type STSSocketIONamespaces = Record<string, STSSocketIONamespace>;
236
-
237
- export type STSServerSocket = Socket<STSDefaultClientToServerEvents, STSDefaultServerToClientEvents, InterServerEvents>
238
- export type STSClientSocket = Socket<STSDefaultServerToClientEvents, STSDefaultClientToServerEvents, InterServerEvents>
239
-
240
- export interface ISocketIoServerHelper<ClientToServerEvents extends STSDefaultClientToServerEvents, ServerToClientEvents extends STSDefaultServerToClientEvents>
241
- {
242
- LogMessage: (namespace: STSSocketIONamespace, message: string) => void
243
- LeaveRoom: (namespace: STSSocketIONamespace, socket: STSServerSocket, room: STSRoom) => void
244
- JoinRoom: (namespace: STSSocketIONamespace, socket: STSServerSocket, room: STSRoom) => void
245
- SetupNamespace: (io: Server, namespace: STSNamespace, rooms: string[], autoJoinRooms: boolean,
246
- /* serverSocketEvents: ServerSocketEvent[], */
247
- socketConnectCallBack: ((socket: Socket<ClientToServerEvents, ServerToClientEvents, InterServerEvents>) => void) | null,
248
- socketEventsCallBack: ((socket: Socket<ClientToServerEvents, ServerToClientEvents, InterServerEvents>) => void) | null
249
- ) => Namespace<ClientToServerEvents, ServerToClientEvents, InterServerEvents>
250
- GetSTSSocketIONamespace: (namespace: any) => STSSocketIONamespace
251
- GetSTSSocketIONamespaces: () => STSSocketIONamespaces
252
- DisconnectSockets: () => void
253
- SetupEvent(event: ClientToServerEvents, eventCb: ServerEventCb): ISocketIoServerHelper<ClientToServerEvents, ServerToClientEvents>
254
- }
255
-
256
178
  /*
257
179
  export interface IInfluxDBManagerOptions {
258
180
  token: string // API access token
@@ -17,15 +17,17 @@ import { JSONObject } from '@nsshunt/stsutils'
17
17
  import { StatusCodes } from 'http-status-codes'
18
18
 
19
19
  import { PublishInstrumentController, IPublishInstrumentControllerOptions, InstrumentDefinitions,
20
- TransportType, IPublishTransportRESTServerOptions,
21
- STSDefaultClientToServerEvents, STSDefaultServerToClientEvents, GetInstruments } from '@nsshunt/stsobservability'
20
+ TransportType, IPublishTransportRESTServerOptions, GetInstruments } from '@nsshunt/stsobservability'
22
21
 
22
+ import { STSDefaultClientToServerEvents, STSDefaultServerToClientEvents } from '@nsshunt/stssocketioutils'
23
23
  import os from 'os';
24
24
 
25
- import { IProcessBase, ISocketIoServerHelper, CreateServiceProcessContext, ProcessOptions, IProcessBaseEvents } from './../commonTypes'
25
+ import { IProcessBase, CreateServiceProcessContext, ProcessOptions, IProcessBaseEvents } from './../commonTypes'
26
26
 
27
27
  import { TinyEmitter } from 'tiny-emitter';
28
28
 
29
+ import { ISocketIoServerHelper } from '@nsshunt/stssocketioutils'
30
+
29
31
  export abstract class ProcessBase extends TinyEmitter implements IProcessBase
30
32
  {
31
33
  #options: ProcessOptions;
@@ -5,9 +5,6 @@ import { goptions } from '@nsshunt/stsconfig'
5
5
 
6
6
  import fs from 'node:fs'
7
7
 
8
- import { createAdapter as clusterCreateAdapter } from '@socket.io/cluster-adapter'
9
- import { createAdapter } from "@socket.io/redis-streams-adapter";
10
-
11
8
  import { JSONObject, Sleep } from '@nsshunt/stsutils'
12
9
 
13
10
  import { ProcessOptions, IServerProcessBase } from './../commonTypes'
@@ -24,7 +21,14 @@ import { Server, ServerOptions } from "socket.io";
24
21
  import { STSExpressServer } from './../stsexpressserver'
25
22
  import { Express } from 'express'
26
23
 
24
+ import { createAdapter as clusterCreateAdapter } from '@socket.io/cluster-adapter'
25
+ import { createAdapter } from "@socket.io/redis-streams-adapter";
26
+ //import { ClusterAdapterWithHeartbeat } from 'socket.io-adaptor';
27
+
28
+ //import { createAdapter } from "@socket.io/redis-adapter";
29
+
27
30
  import { createClient, RedisClientType } from 'redis';
31
+ import { Redis } from 'ioredis';
28
32
 
29
33
  import jayson from 'jayson'
30
34
 
@@ -39,7 +43,7 @@ export abstract class ServerProcessBase extends ProcessBase implements IServerPr
39
43
  {
40
44
  #masterProcessExitTime = goptions.masterProcessExitTime;
41
45
  #io: Server | null = null;
42
- #redisClient: RedisClientType | null = null;
46
+ #redisClient: RedisClientType | Redis | null = null;
43
47
  #httpServer: any = null;
44
48
  #expressServer: STSExpressServer | null = null;
45
49
  #sockets: net.Socket[] = [ ];
@@ -163,25 +167,29 @@ export abstract class ServerProcessBase extends ProcessBase implements IServerPr
163
167
  //this.#io = require("socket.io")(this.#httpServer, options);
164
168
  this.#io = new Server(this.#httpServer, options);
165
169
 
166
- if (this.options.clusterMode) {
167
- if (this.options.useSocketIoRedisAdaptor) {
168
- this.LogInfoMessage(`Using Redis for socket.io cluster management (worker)`);
169
- if (this.options.socketIoRedisAdaptorUrl) {
170
- this.LogInfoMessage(`Redis url: [${this.options.socketIoRedisAdaptorUrl}]`);
171
- this.#redisClient = createClient({url: this.options.socketIoRedisAdaptorUrl});
172
- } else {
173
- this.LogInfoMessage(`Redis url: [localhost]`);
174
- this.#redisClient = createClient();
175
- }
176
- await this.#redisClient.connect();
177
- this.#io.adapter(createAdapter(this.#redisClient) as any);
178
- this.LogInfoMessage(`Redis successfully connected.`);
170
+ if (this.options.useSocketIoRedisAdaptor) {
171
+ this.LogInfoMessage(`Using Redis for socket.io cluster management (worker)`);
172
+ if (this.options.socketIoRedisAdaptorUrl) {
173
+ this.LogInfoMessage(`Redis url: [${this.options.socketIoRedisAdaptorUrl}]`);
174
+ this.#redisClient = createClient({url: this.options.socketIoRedisAdaptorUrl});
179
175
  } else {
176
+ this.LogInfoMessage(`Redis url: [localhost]`);
177
+ this.#redisClient = createClient();
178
+ }
179
+ await this.#redisClient.connect();
180
+
181
+ //this.#redisClient = new Redis(this.options.socketIoRedisAdaptorUrl as string);
182
+
183
+ this.#io.adapter(createAdapter(this.#redisClient));
184
+
185
+ this.LogInfoMessage(`Redis successfully connected.`);
186
+ } else {
187
+ if (this.options.clusterMode) {
180
188
  this.#io.adapter(clusterCreateAdapter() as any);
181
189
  this.LogInfoMessage(`Using nodejs cluster mode for socket.io cluster management`);
190
+ } else {
191
+ this.LogInfoMessage(`Not using any adaptors for socket.io cluster management.}`);
182
192
  }
183
- } else {
184
- this.LogInfoMessage(`Not using any adaptors for socket.io cluster management.}`);
185
193
  }
186
194
 
187
195
  // To use a seperate socket server, the code below can be applied.
@@ -255,18 +263,31 @@ export abstract class ServerProcessBase extends ProcessBase implements IServerPr
255
263
  return this.#shuttingDown;
256
264
  }
257
265
 
258
- TerminateSocketIO = () => {
266
+ TerminateSocketIO = async (): Promise<void> => {
259
267
  if (this.options.wssServer === true && this.#io !== null) {
260
268
  const logPrefix = `ServerProcessBase:TerminateSockets():${process.pid}:`;
261
269
  this.LogInfoMessage(`${logPrefix} Disconnect SocketIO Sockets.`);
270
+ await Sleep(250);
271
+ await this.#io?.of('/').adapter.close();
262
272
  if (this.socketIoServerHelper !== null) {
263
- this.socketIoServerHelper.DisconnectSockets();
273
+ await this.socketIoServerHelper.CloseAdaptors();
274
+ await Sleep(50);
275
+ if (this.#redisClient) {
276
+ this.#redisClient.disconnect();
277
+ await Sleep(50);
278
+ }
279
+ this.LogInfoMessage(`${logPrefix} this.socketIoServerHelper.DisconnectSockets()`);
280
+ await this.socketIoServerHelper.DisconnectSockets();
264
281
  } else {
282
+ this.LogInfoMessage(`${logPrefix} this.#io.disconnectSockets()`);
283
+ if (this.#redisClient) {
284
+ this.#redisClient.disconnect();
285
+ await Sleep(50);
286
+ }
265
287
  this.#io.disconnectSockets();
266
288
  }
267
289
  this.socketIoServerHelper = null;
268
290
  this.#io = null;
269
- // Note that this.#redisClient.disconnect() is not required becuase DisconnectSockets performs this action.
270
291
  }
271
292
  }
272
293
 
@@ -308,7 +329,7 @@ export abstract class ServerProcessBase extends ProcessBase implements IServerPr
308
329
 
309
330
  this.TerminateUIController();
310
331
 
311
- this.TerminateSocketIO();
332
+ await this.TerminateSocketIO();
312
333
 
313
334
  await this.TerminateHTTPServer();
314
335
 
@@ -57,8 +57,7 @@ export class SingleProcessBase extends ServerProcessBase implements ISingleProce
57
57
  return true;
58
58
  }
59
59
 
60
- async TerminateApplication()
61
- {
60
+ async TerminateApplication() {
62
61
  await this.Terminate(false, 'SIGINT');
63
62
  }
64
63
  }
@@ -82,7 +82,9 @@ export function ServiceConfigOptions(clusterMode: boolean, isMaster: boolean): P
82
82
  instrumentationObservationInterval: goptions.instrumentationObservationInterval,
83
83
  instrumentationTimeWindow: goptions.instrumentationTimeWindow,
84
84
 
85
- useSocketIoRedisAdaptor: false,
85
+ useSocketIoRedisAdaptor: true,
86
+ socketIoRedisAdaptorUrl: goptions.socketIoRedisAdaptorUrl,
87
+ //socketIoRedisAdaptorUrl: 'redis://192.168.50.5:6379',
86
88
  //workerExec: './dist/testing/app.js',
87
89
 
88
90
  logger: logger,