@futdevpro/nts-dynamo 1.10.7 → 1.10.9
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/_collections/stack.util.d.ts +7 -0
- package/build/_collections/stack.util.d.ts.map +1 -0
- package/build/_collections/stack.util.js +31 -0
- package/build/_collections/stack.util.js.map +1 -0
- package/build/_collections/stack.util.test.d.ts +2 -0
- package/build/_collections/stack.util.test.d.ts.map +1 -0
- package/build/_collections/stack.util.test.js +96 -0
- package/build/_collections/stack.util.test.js.map +1 -0
- package/build/_models/control-models/api-call-params.control-model.d.ts +1 -0
- package/build/_models/control-models/api-call-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/api-call-params.control-model.js +7 -3
- package/build/_models/control-models/api-call-params.control-model.js.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.d.ts +0 -1
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +26 -13
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_modules/mock/data-model.mock.d.ts.map +1 -1
- package/build/_modules/mock/data-model.mock.js +2 -3
- package/build/_modules/mock/data-model.mock.js.map +1 -1
- package/build/_modules/mock/data-model.mock.spec.js +0 -1
- package/build/_modules/mock/data-model.mock.spec.js.map +1 -1
- package/build/_modules/mock/socket-client.mock.js +1 -1
- package/build/_modules/mock/socket-client.mock.js.map +1 -1
- package/build/_modules/mock/socket-client.mock.spec.js +1 -1
- package/build/_modules/mock/socket-client.mock.spec.js.map +1 -1
- package/build/_modules/socket/_models/socket-client-service-params.control-model.d.ts.map +1 -1
- package/build/_modules/socket/_models/socket-client-service-params.control-model.js +1 -1
- package/build/_modules/socket/_models/socket-client-service-params.control-model.js.map +1 -1
- package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js +1 -1
- package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js.map +1 -1
- package/build/_modules/socket/_services/socket-client.service.d.ts +2 -2
- package/build/_modules/socket/_services/socket-client.service.d.ts.map +1 -1
- package/build/_modules/socket/_services/socket-client.service.js +7 -2
- package/build/_modules/socket/_services/socket-client.service.js.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.d.ts +9 -11
- package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.js +243 -109
- package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
- package/build/_modules/socket/app-extended.server.d.ts.map +1 -1
- package/build/_modules/socket/app-extended.server.js +11 -2
- package/build/_modules/socket/app-extended.server.js.map +1 -1
- package/build/_modules/test/test.controller.js +6 -6
- package/build/_modules/test/test.controller.js.map +1 -1
- package/build/_services/base/data.service.d.ts.map +1 -1
- package/build/_services/base/data.service.js +9 -1
- package/build/_services/base/data.service.js.map +1 -1
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +42 -39
- package/build/_services/base/db.service.js.map +1 -1
- package/build/_services/core/api.service.d.ts.map +1 -1
- package/build/_services/core/api.service.js +15 -8
- package/build/_services/core/api.service.js.map +1 -1
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +2 -1
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/server/app.server.js +5 -5
- package/build/_services/server/app.server.js.map +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/package.json +4 -4
- package/src/_collections/stack.util.test.ts +111 -0
- package/src/_collections/stack.util.ts +33 -0
- package/src/_models/control-models/api-call-params.control-model.ts +17 -3
- package/src/_models/control-models/endpoint-params.control-model.ts +26 -19
- package/src/_modules/mock/data-model.mock.spec.ts +0 -1
- package/src/_modules/mock/data-model.mock.ts +2 -3
- package/src/_modules/mock/socket-client.mock.spec.ts +1 -1
- package/src/_modules/mock/socket-client.mock.ts +1 -1
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +1 -2
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +2 -1
- package/src/_modules/socket/_services/socket-client.service.ts +8 -4
- package/src/_modules/socket/_services/socket-server.service.ts +335 -145
- package/src/_modules/socket/app-extended.server.ts +21 -6
- package/src/_modules/test/test.controller.ts +7 -7
- package/src/_services/base/data.service.ts +21 -1
- package/src/_services/base/db.service.ts +47 -39
- package/src/_services/core/api.service.ts +18 -10
- package/src/_services/core/global.service.ts +4 -1
- package/src/_services/server/app.server.ts +7 -7
- package/src/index.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.service.js","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-client.service.ts"],"names":[],"mappings":";;;;AAGA,yEAAmD;AAEnD,sDAE+B;AAC/B,yDAAsF;AAEtF,iFAAmF;AACnF,uFAAoF;AAKpF,MAAsB,8BAA+B,SAAQ,0CAAsB,CAAC,mCAAmC;IAE7G,OAAO,CAAmC;IAClD,IAAc,MAAM,KAAuC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACjF,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,CAAwB;IAE9B,cAAc,CAA0B;IAExC,UAAU,GAAY,KAAK,CAAC;IACtC,IAAI,SAAS,KAAc,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1C,QAAQ,GAAY,6CAAqB,CAAC,YAAY,CAAC,KAAK,CAAC;IAC7D,KAAK,GAAY,6CAAqB,CAAC,YAAY,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"socket-client.service.js","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-client.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as SocketIO from 'socket.io';
|
|
2
|
-
import {
|
|
2
|
+
import { DyFM_AnyError } from '@futdevpro/fsm-dynamo';
|
|
3
|
+
import { DyFM_SocketEvent, DyFM_SocketEventTask } from '@futdevpro/fsm-dynamo/socket';
|
|
3
4
|
import { DyNTS_SingletonService } from '../../../_services/base/singleton.service';
|
|
4
5
|
import { DyNTS_SocketSecurity } from '../_enums/socket-security.enum';
|
|
5
6
|
import { DyNTS_SocketPresence } from '../_models/socket-presence.control-model';
|
|
@@ -25,10 +26,7 @@ export declare abstract class DyNTS_SocketServerService<T_Presence extends DyNTS
|
|
|
25
26
|
get activeSubscriptionsCount(): number;
|
|
26
27
|
protected openSocketServer: SocketIO.Server;
|
|
27
28
|
protected secureSocketServer: SocketIO.Server;
|
|
28
|
-
private connectEvent;
|
|
29
29
|
protected incomingEvents: DyFM_SocketEvent<any>[];
|
|
30
|
-
private subscriptionEvent;
|
|
31
|
-
private unsubscribeEvent;
|
|
32
30
|
protected presences: T_Presence[];
|
|
33
31
|
get logSetup(): boolean;
|
|
34
32
|
get highDetailedLogs(): boolean;
|
|
@@ -46,6 +44,8 @@ export declare abstract class DyNTS_SocketServerService<T_Presence extends DyNTS
|
|
|
46
44
|
private prepareEvents;
|
|
47
45
|
setupSocketServer(newSocketServer: SocketIO.Server, security: DyNTS_SocketSecurity.open | DyNTS_SocketSecurity.secure, successCallback: () => void): Promise<SocketIO.Server>;
|
|
48
46
|
protected addSocketToPresence(newPresence: T_Presence): Promise<void>;
|
|
47
|
+
protected closeSocket(socket: SocketIO.Socket, issuer: string, withError?: DyFM_AnyError): Promise<void>;
|
|
48
|
+
protected removeSocketFromPresence(socket: SocketIO.Socket): Promise<void>;
|
|
49
49
|
private disconnectBaseTask;
|
|
50
50
|
private removeSubscription;
|
|
51
51
|
idIsSubscribed(id: string): boolean;
|
|
@@ -64,23 +64,21 @@ export declare abstract class DyNTS_SocketServerService<T_Presence extends DyNTS
|
|
|
64
64
|
/**
|
|
65
65
|
* You can setup tasks for the subscription event in this function
|
|
66
66
|
*/
|
|
67
|
-
protected getSubscriptionTasks?(): DyFM_SocketEventTask<T_SubscriptionContent>[];
|
|
68
67
|
/**
|
|
69
|
-
* You can setup
|
|
68
|
+
* You can setup preprocesses for the subscription event in this function
|
|
70
69
|
*/
|
|
71
|
-
protected getSubscriptionCloseTasks?(): DyFM_SocketEventTask<null>[];
|
|
72
70
|
/**
|
|
73
|
-
* You can setup
|
|
71
|
+
* You can setup tasks for the subscription event in this function
|
|
72
|
+
* This will happen after the presence is created
|
|
73
|
+
* If this throws an error, the socket will be closed
|
|
74
74
|
*/
|
|
75
|
-
protected
|
|
75
|
+
protected getSubscriptionTasks?(): DyFM_SocketEventTask<T_SubscriptionContent>[];
|
|
76
76
|
/**
|
|
77
77
|
* You can setup tasks for the unsubscribe event in this function
|
|
78
78
|
*/
|
|
79
|
-
protected getUnsubscribeTasks?(): DyFM_SocketEventTask<T_SubscriptionContent>[];
|
|
80
79
|
/**
|
|
81
80
|
* You can setup preprocesses for the unsubscribe event in this function
|
|
82
81
|
*/
|
|
83
|
-
protected getUnsubscribePreProcesses?(): DyFM_SocketEventPreprocessTask[];
|
|
84
82
|
/**
|
|
85
83
|
* You can setup tasks for the error event in this function
|
|
86
84
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-server.service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-server.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"socket-server.service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-server.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DyNTS_SocketServerService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const SocketIO = tslib_1.__importStar(require("socket.io"));
|
|
4
6
|
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
7
|
const socket_1 = require("@futdevpro/fsm-dynamo/socket");
|
|
6
8
|
const global_settings_const_1 = require("../../../_collections/global-settings.const");
|
|
@@ -27,17 +29,19 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
27
29
|
get activeSubscriptionsCount() { return this.presences.length; }
|
|
28
30
|
openSocketServer;
|
|
29
31
|
secureSocketServer;
|
|
30
|
-
connectEvent
|
|
32
|
+
/* private connectEvent: DyFM_SocketEvent<SocketIO.Socket>; */
|
|
31
33
|
incomingEvents;
|
|
32
|
-
subscriptionEvent
|
|
33
|
-
unsubscribeEvent
|
|
34
|
+
/* private subscriptionEvent: DyFM_SocketEvent<any>; */
|
|
35
|
+
/* private unsubscribeEvent: DyFM_SocketEvent<any>; */
|
|
34
36
|
presences = [];
|
|
35
37
|
get logSetup() { return global_settings_const_1.DyNTS_global_settings.log_settings.setup; }
|
|
36
38
|
get highDetailedLogs() { return global_settings_const_1.DyNTS_global_settings.log_settings.highDetailedLogs; }
|
|
37
39
|
defaultErrorUserMsg = `We encountered an unhandled Socket Server Error, ` +
|
|
38
40
|
`\nplease contact the responsible development team.`;
|
|
41
|
+
/* readonly thisLocationStack: string; */
|
|
39
42
|
constructor() {
|
|
40
43
|
super();
|
|
44
|
+
/* this.thisLocationStack = DyNTS_getStackLocation(); */
|
|
41
45
|
this.asyncConstructor().catch((error) => {
|
|
42
46
|
fsm_dynamo_1.DyFM_Log.error(`Socket Server Service setup failed: "${this.params?.name}" (${this.params?.port})`, error);
|
|
43
47
|
});
|
|
@@ -65,88 +69,95 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
65
69
|
async prepareEvents() {
|
|
66
70
|
try {
|
|
67
71
|
/** Setup connect event */
|
|
68
|
-
const connectEventIndex = this.incomingEvents.findIndex(
|
|
72
|
+
/* const connectEventIndex = this.incomingEvents.findIndex(
|
|
73
|
+
(event: DyFM_SocketEvent<any>) =>
|
|
74
|
+
event.eventKey === DyFM_SocketEvent_Key.connection
|
|
75
|
+
);
|
|
76
|
+
|
|
69
77
|
if (0 <= connectEventIndex) {
|
|
70
|
-
|
|
78
|
+
this.connectEvent = this.incomingEvents.splice(connectEventIndex)[0];
|
|
79
|
+
} else {
|
|
80
|
+
this.connectEvent = new DyFM_SocketEvent({
|
|
81
|
+
eventKey: DyFM_SocketEvent_Key.connection,
|
|
82
|
+
});
|
|
71
83
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
84
|
+
this.connectEvent.serviceName = this.params.name; */
|
|
85
|
+
if (!this.getPresenceFromSubscriptionEventContent) {
|
|
86
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
87
|
+
error: new Error('getPresenceFromSubscriptionEventContent must be set'),
|
|
88
|
+
errorCode: 'NTS-SSS-PPE1',
|
|
75
89
|
});
|
|
76
90
|
}
|
|
77
|
-
this.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
if (this.getUnsubscribePreProcesses) {
|
|
112
|
-
this.unsubscribeEvent.preProcesses.push(...this.getUnsubscribePreProcesses());
|
|
113
|
-
}
|
|
114
|
-
if (this.getUnsubscribeTasks) {
|
|
115
|
-
this.unsubscribeEvent.tasks.push(...this.getUnsubscribeTasks());
|
|
116
|
-
}
|
|
117
|
-
this.unsubscribeEvent.serviceName = this.params.name;
|
|
118
|
-
/** Setup disconnect event */
|
|
119
|
-
const disconnectEventIndex = this.incomingEvents.findIndex((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.disconnect);
|
|
120
|
-
if (0 <= disconnectEventIndex) {
|
|
121
|
-
this.incomingEvents[disconnectEventIndex].serviceName = this.params.name;
|
|
122
|
-
this.incomingEvents[disconnectEventIndex].tasks.push(this.disconnectBaseTask);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
this.incomingEvents.push(new socket_1.DyFM_SocketEvent({
|
|
126
|
-
serviceName: this.params.name,
|
|
127
|
-
eventKey: socket_1.DyFM_SocketEvent_Key.disconnect,
|
|
128
|
-
tasks: [
|
|
129
|
-
this.disconnectBaseTask,
|
|
130
|
-
],
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
/** Setup error event */
|
|
134
|
-
const errorEventIndex = this.incomingEvents.findIndex((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.error);
|
|
135
|
-
if (errorEventIndex == -1 && this.errorHandling) {
|
|
136
|
-
this.incomingEvents.push(new socket_1.DyFM_SocketEvent({
|
|
137
|
-
serviceName: this.params.name,
|
|
138
|
-
eventKey: socket_1.DyFM_SocketEvent_Key.error,
|
|
139
|
-
tasks: [
|
|
140
|
-
this.errorHandling,
|
|
141
|
-
],
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
this.subscriptionEvent.name = this.params.name;
|
|
91
|
+
if (!this.getSubscriptionTasks) {
|
|
92
|
+
fsm_dynamo_1.DyFM_Log.warn(`You should not set the subscription event, ` +
|
|
93
|
+
`in case you need additional steps for your subscriptions.`, `${this.params.name} (${this.params.port})`);
|
|
94
|
+
}
|
|
95
|
+
if (this.incomingEvents.find((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.subscribe)) {
|
|
96
|
+
fsm_dynamo_1.DyFM_Log.warn(`You need to use getSubscriptionTasks() ` +
|
|
97
|
+
`instead of setting the subscribe event in getIncomingEvents().`, `${this.params.name} (${this.params.port})`);
|
|
98
|
+
}
|
|
99
|
+
if (!this.incomingEvents.find((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.unsubscribe)) {
|
|
100
|
+
fsm_dynamo_1.DyFM_Log.warn(`You should not set the unsubscribe event, ` +
|
|
101
|
+
`in case you need additional steps for your unsubscribe.`, `${this.params.name} (${this.params.port})`);
|
|
102
|
+
}
|
|
103
|
+
if (this.incomingEvents.find((event) => !event.eventKey)) {
|
|
104
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
105
|
+
error: new Error('eventKey must be set'),
|
|
106
|
+
errorCode: 'NTS-SSS-PPE2',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
this.incomingEvents.push(new socket_1.DyFM_SocketEvent({
|
|
110
|
+
eventKey: socket_1.DyFM_SocketEvent_Key.disconnect,
|
|
111
|
+
tasks: [
|
|
112
|
+
async (socket, issuer) => this.disconnectBaseTask(socket, issuer),
|
|
113
|
+
],
|
|
114
|
+
}));
|
|
115
|
+
if (this.errorHandling) {
|
|
116
|
+
this.incomingEvents.push(new socket_1.DyFM_SocketEvent({
|
|
117
|
+
serviceName: this.params.name,
|
|
118
|
+
eventKey: socket_1.DyFM_SocketEvent_Key.error,
|
|
119
|
+
tasks: [
|
|
120
|
+
async (content) => this.errorHandling(content),
|
|
121
|
+
],
|
|
122
|
+
}));
|
|
145
123
|
}
|
|
146
124
|
else {
|
|
147
|
-
fsm_dynamo_1.DyFM_Log.
|
|
125
|
+
fsm_dynamo_1.DyFM_Log.warn(`You should not set the error event, ` +
|
|
126
|
+
`in case you need additional steps for your error.`, `${this.params.name} (${this.params.port})`);
|
|
127
|
+
this.incomingEvents.push(new socket_1.DyFM_SocketEvent({
|
|
128
|
+
serviceName: this.params.name,
|
|
129
|
+
eventKey: socket_1.DyFM_SocketEvent_Key.error,
|
|
130
|
+
tasks: [
|
|
131
|
+
async (content) => {
|
|
132
|
+
if (content instanceof fsm_dynamo_1.DyFM_Error) {
|
|
133
|
+
content.logSimple(`=--> socket-client(${this.params.name}) ERROR`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
fsm_dynamo_1.DyFM_Log.error(`=--> socket-client(${this.params.name}) ERROR:`, content);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
}));
|
|
148
141
|
}
|
|
149
|
-
|
|
142
|
+
// Merge incoming events of the same eventKey
|
|
143
|
+
const eventKeys = this.incomingEvents.map((event) => event.eventKey).filter((eventKey, index, self) => self.indexOf(eventKey) === index);
|
|
144
|
+
const mergedEvents = [];
|
|
145
|
+
eventKeys.forEach((eventKey) => {
|
|
146
|
+
const events = this.incomingEvents.filter((event) => event.eventKey === eventKey);
|
|
147
|
+
mergedEvents.push(new socket_1.DyFM_SocketEvent({
|
|
148
|
+
eventKey: eventKey,
|
|
149
|
+
preProcesses: events.map((event) => event.preProcesses).flat(),
|
|
150
|
+
tasks: events.map((event) => event.tasks).flat(),
|
|
151
|
+
}));
|
|
152
|
+
});
|
|
153
|
+
this.incomingEvents = mergedEvents;
|
|
154
|
+
if (global_settings_const_1.DyNTS_global_settings.log_settings.setup) {
|
|
155
|
+
fsm_dynamo_1.DyFM_Log.log(`Socket Server Service - Event Preparation setup done: ` +
|
|
156
|
+
`"${this.params?.name}" (${this.params?.port})` +
|
|
157
|
+
`\nincomingEvents:`, this.incomingEvents.map((event) => `\n\t"${event.eventKey}": preProcesses: ${event.preProcesses?.length} ` +
|
|
158
|
+
`tasks: ${event.tasks?.length}`));
|
|
159
|
+
}
|
|
160
|
+
// Set incoming events serviceName
|
|
150
161
|
this.incomingEvents.forEach((event) => {
|
|
151
162
|
event.serviceName = this.params.name;
|
|
152
163
|
});
|
|
@@ -162,12 +173,16 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
162
173
|
try {
|
|
163
174
|
if (this.highDetailedLogs)
|
|
164
175
|
console.log('\nfn:. setupSocketServer');
|
|
165
|
-
newSocketServer.on(socket_1.DyFM_SocketEvent_Key.
|
|
176
|
+
newSocketServer.on(socket_1.DyFM_SocketEvent_Key.incomingNewConnection, async (socket) => {
|
|
166
177
|
try {
|
|
167
178
|
let issuer;
|
|
168
|
-
await this.connectEvent.executeEventTasks(socket);
|
|
179
|
+
/* await this.connectEvent.executeEventTasks(socket); */
|
|
180
|
+
await fsm_dynamo_1.DyFM_Array.asyncForEach(this.incomingEvents.filter((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.incomingNewConnection), async (event) => {
|
|
181
|
+
await event.executeEventTasks(socket);
|
|
182
|
+
});
|
|
169
183
|
if (this.getPresenceFromSubscriptionEventContent) {
|
|
170
184
|
socket.on(socket_1.DyFM_SocketEvent_Key.subscribe, async (content) => {
|
|
185
|
+
let presence;
|
|
171
186
|
try {
|
|
172
187
|
/**
|
|
173
188
|
* usually socket logs are in event.executeEventTasks(),
|
|
@@ -183,11 +198,16 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
183
198
|
fsm_dynamo_1.DyFM_Log.log(`--=> incoming socket(${this.params.name}) ` +
|
|
184
199
|
`event: "${socket_1.DyFM_SocketEvent_Key.subscribe}"`);
|
|
185
200
|
}
|
|
186
|
-
|
|
201
|
+
presence = await this.getPresenceFromSubscriptionEventContent(content, socket);
|
|
187
202
|
presence.serviceName = this.params.name;
|
|
188
203
|
issuer = presence.issuerLocalId;
|
|
189
204
|
this.addSocketToPresence(presence);
|
|
190
|
-
await this.subscriptionEvent.executeEventTasks(content, issuer);
|
|
205
|
+
/* await this.subscriptionEvent.executeEventTasks(content, issuer); */
|
|
206
|
+
if (this.getSubscriptionTasks) {
|
|
207
|
+
await fsm_dynamo_1.DyFM_Array.asyncForEach(this.getSubscriptionTasks(), async (task) => {
|
|
208
|
+
await task(content, issuer);
|
|
209
|
+
});
|
|
210
|
+
}
|
|
191
211
|
socket.emit(socket_1.DyFM_SocketEvent_Key.subscriptionSuccessful, 'subscribe was successful', error => {
|
|
192
212
|
fsm_dynamo_1.DyFM_Log.error(`Emitting subscriptionSuccessful event failed!` +
|
|
193
213
|
`\nerror:`, error);
|
|
@@ -195,14 +215,20 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
195
215
|
fsm_dynamo_1.DyFM_Log.success(`<-==> socket(${this.params.name}) subscription successful (${issuer})`);
|
|
196
216
|
}
|
|
197
217
|
catch (error) {
|
|
198
|
-
if (
|
|
199
|
-
|
|
218
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
219
|
+
error.logSimple(`Socket Subscription failed: "${this.params.name}" ` +
|
|
220
|
+
`(${this.params.port}) will disconnect now...`);
|
|
221
|
+
}
|
|
222
|
+
else if (global_settings_const_1.DyNTS_global_settings.log_settings.socket_eventContent) {
|
|
223
|
+
fsm_dynamo_1.DyFM_Log.error(`Socket Subscription failed: "${this.params.name}" ` +
|
|
224
|
+
`(${this.params.port}) will disconnect now...`,
|
|
225
|
+
/* `${this.thisLocationStack}`, */
|
|
226
|
+
error);
|
|
200
227
|
}
|
|
201
228
|
else {
|
|
202
229
|
fsm_dynamo_1.DyFM_Log.error(`Socket Subscription failed: "${this.params.name}" `, `(${this.params.port}) will disconnect now...`);
|
|
203
230
|
}
|
|
204
|
-
|
|
205
|
-
socket.disconnect();
|
|
231
|
+
await this.closeSocket(socket, issuer, error);
|
|
206
232
|
}
|
|
207
233
|
});
|
|
208
234
|
socket.on(socket_1.DyFM_SocketEvent_Key.unsubscribe, async (issuer) => {
|
|
@@ -221,8 +247,11 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
221
247
|
fsm_dynamo_1.DyFM_Log.log(`--=> incoming socket(${this.params.name}) ` +
|
|
222
248
|
`event: ${socket_1.DyFM_SocketEvent_Key.unsubscribe}`);
|
|
223
249
|
}
|
|
250
|
+
/* await this.unsubscribeEvent.executeEventTasks(null, issuer); */
|
|
251
|
+
await fsm_dynamo_1.DyFM_Array.asyncForEach(this.incomingEvents.filter((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.unsubscribe), async (event) => {
|
|
252
|
+
await event.executeEventTasks(null, issuer);
|
|
253
|
+
});
|
|
224
254
|
this.removeSubscription(socket, issuer);
|
|
225
|
-
await this.unsubscribeEvent.executeEventTasks(issuer, issuer);
|
|
226
255
|
socket.emit(socket_1.DyFM_SocketEvent_Key.unsubscribeSuccessful, 'unsubscribe was successful', error => {
|
|
227
256
|
fsm_dynamo_1.DyFM_Log.error(`Emitting unsubscribeSuccessful event failed!` +
|
|
228
257
|
`\nerror:`, error);
|
|
@@ -230,23 +259,35 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
230
259
|
fsm_dynamo_1.DyFM_Log.success(`< x > socket(${this.params.name}) unsubscribe successful (${issuer})`);
|
|
231
260
|
}
|
|
232
261
|
catch (error) {
|
|
233
|
-
if (
|
|
262
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
263
|
+
error.logSimple(`Socket Unsubscription failed: "${this.params.name}" ` +
|
|
264
|
+
`(${this.params.port}) will disconnect now...`);
|
|
265
|
+
}
|
|
266
|
+
else if (global_settings_const_1.DyNTS_global_settings.log_settings.socket_eventContent) {
|
|
234
267
|
fsm_dynamo_1.DyFM_Log.error(`Socket unsubscribe failed: "${this.params.name}" `, `(${this.params.port}) will disconnect now...`, error);
|
|
235
268
|
}
|
|
236
269
|
else {
|
|
237
270
|
fsm_dynamo_1.DyFM_Log.error(`Socket unsubscribe failed: "${this.params.name}" `, `(${this.params.port}) will disconnect now...`);
|
|
238
271
|
}
|
|
239
272
|
socket.emit(socket_1.DyFM_SocketEvent_Key.error, error);
|
|
273
|
+
this.removeSubscription(socket, issuer);
|
|
240
274
|
}
|
|
241
275
|
});
|
|
242
276
|
}
|
|
243
|
-
this.incomingEvents.
|
|
277
|
+
this.incomingEvents.filter((event) => event.eventKey !== socket_1.DyFM_SocketEvent_Key.incomingNewConnection &&
|
|
278
|
+
event.eventKey !== socket_1.DyFM_SocketEvent_Key.subscribe &&
|
|
279
|
+
event.eventKey !== socket_1.DyFM_SocketEvent_Key.unsubscribe).forEach((event) => {
|
|
244
280
|
socket.on(event.eventKey, async (content) => {
|
|
245
281
|
try {
|
|
246
282
|
await event.executeEventTasks(content, issuer);
|
|
247
283
|
}
|
|
248
284
|
catch (error) {
|
|
249
|
-
|
|
285
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
286
|
+
error.logSimple(`Socket Event failed: "${this.params.name}" (${this.params.port})`);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
fsm_dynamo_1.DyFM_Log.error(`Socket Event failed: "${this.params.name}" (${this.params.port})`, error);
|
|
290
|
+
}
|
|
250
291
|
socket.emit(socket_1.DyFM_SocketEvent_Key.error, error);
|
|
251
292
|
}
|
|
252
293
|
});
|
|
@@ -256,10 +297,15 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
256
297
|
}
|
|
257
298
|
}
|
|
258
299
|
catch (error) {
|
|
259
|
-
|
|
260
|
-
`
|
|
261
|
-
|
|
262
|
-
|
|
300
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
301
|
+
error.logSimple(`Socket Connection failed: "${this.params.name}" ` +
|
|
302
|
+
`(${this.params.port}) will disconnect now...`);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
fsm_dynamo_1.DyFM_Log.error(`Socket Connection failed: "${this.params.name}" ` +
|
|
306
|
+
`(${this.params.port}) will disconnect now...`, error);
|
|
307
|
+
}
|
|
308
|
+
await this.closeSocket(socket, `${this.params.name} on connection error`, error);
|
|
263
309
|
}
|
|
264
310
|
});
|
|
265
311
|
newSocketServer.listen(this.params.port);
|
|
@@ -276,8 +322,14 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
276
322
|
}
|
|
277
323
|
}
|
|
278
324
|
catch (error) {
|
|
279
|
-
|
|
280
|
-
`
|
|
325
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
326
|
+
error.logSimple(`Socket Server Service - Deep Setup failed: "${this.params?.name}" ` +
|
|
327
|
+
`(${this.params?.port})`);
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
fsm_dynamo_1.DyFM_Log.error(`Socket Server Service - Deep Setup failed: "${this.params?.name}" ` +
|
|
331
|
+
`(${this.params?.port})`, error);
|
|
332
|
+
}
|
|
281
333
|
throw error;
|
|
282
334
|
}
|
|
283
335
|
}
|
|
@@ -292,8 +344,13 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
292
344
|
}
|
|
293
345
|
}
|
|
294
346
|
catch (error) {
|
|
295
|
-
if (
|
|
296
|
-
|
|
347
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
348
|
+
error.logSimple(`Socket Subscription failed: "${this.params?.name}" (${this.params?.port})`);
|
|
349
|
+
}
|
|
350
|
+
else if (global_settings_const_1.DyNTS_global_settings.log_settings.socket_eventContent) {
|
|
351
|
+
fsm_dynamo_1.DyFM_Log.error(`Socket Subscription failed: "${this.params?.name}" (${this.params?.port})`,
|
|
352
|
+
/* `${this.thisLocationStack}`, */
|
|
353
|
+
error);
|
|
297
354
|
}
|
|
298
355
|
else {
|
|
299
356
|
fsm_dynamo_1.DyFM_Log.error(`Socket Subscription failed: "${this.params?.name}" (${this.params?.port})`);
|
|
@@ -301,8 +358,63 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
301
358
|
throw error;
|
|
302
359
|
}
|
|
303
360
|
}
|
|
361
|
+
async closeSocket(socket, issuer, withError) {
|
|
362
|
+
try {
|
|
363
|
+
if (withError) {
|
|
364
|
+
socket.emit(socket_1.DyFM_SocketEvent_Key.error, withError);
|
|
365
|
+
}
|
|
366
|
+
await fsm_dynamo_1.DyFM_Array.asyncForEach(this.incomingEvents.filter((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.disconnect), async (event) => {
|
|
367
|
+
await event.executeEventTasks(null, issuer);
|
|
368
|
+
});
|
|
369
|
+
/* if (this.getSubscriptionCloseTasks) {
|
|
370
|
+
await DyFM_Array.asyncForEach(
|
|
371
|
+
this.getSubscriptionCloseTasks(),
|
|
372
|
+
async (task: DyFM_SocketEventTask<null>) => {
|
|
373
|
+
await task(null, issuer);
|
|
374
|
+
}
|
|
375
|
+
);
|
|
376
|
+
} */
|
|
377
|
+
socket.emit(socket_1.DyFM_SocketEvent_Key.disconnect);
|
|
378
|
+
socket.disconnect();
|
|
379
|
+
await this.removeSocketFromPresence(socket);
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
383
|
+
...this._getDefaultErrorSettings('closeSocket', error),
|
|
384
|
+
errorCode: 'NTS-SSS-CS0',
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
async removeSocketFromPresence(socket) {
|
|
389
|
+
try {
|
|
390
|
+
const presence = this.presences.find((pres) => pres.sockets.includes(socket));
|
|
391
|
+
if (presence) {
|
|
392
|
+
const socketIndex = presence.sockets.indexOf(socket);
|
|
393
|
+
if (socketIndex !== -1) {
|
|
394
|
+
presence.sockets.splice(socketIndex, 1);
|
|
395
|
+
}
|
|
396
|
+
if (presence.sockets.length === 0) {
|
|
397
|
+
const presenceIndex = this.presences.indexOf(presence);
|
|
398
|
+
if (presenceIndex !== -1) {
|
|
399
|
+
this.presences.splice(presenceIndex, 1);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
catch (error) {
|
|
405
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
406
|
+
...this._getDefaultErrorSettings('removeSocketFromPresence', error),
|
|
407
|
+
errorCode: 'NTS-SSS-RSO0',
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
}
|
|
304
411
|
async disconnectBaseTask(socket, issuer) {
|
|
305
412
|
try {
|
|
413
|
+
if (!(socket instanceof SocketIO.Socket)) {
|
|
414
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
415
|
+
...this._getDefaultErrorSettings('disconnectBaseTask', new Error('Socket is not a SocketIO.Socket')),
|
|
416
|
+
});
|
|
417
|
+
}
|
|
306
418
|
await this.removeSubscription(socket, issuer);
|
|
307
419
|
fsm_dynamo_1.DyFM_Log.info(`< x > socket(${this.params.name}) disconnected (${issuer})`);
|
|
308
420
|
}
|
|
@@ -318,14 +430,14 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
318
430
|
const activePresenceIndex = this.presences.findIndex((pres) => pres.sockets.includes(socket));
|
|
319
431
|
if (activePresenceIndex === -1) {
|
|
320
432
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
321
|
-
...this._getDefaultErrorSettings('sendEventForId', new Error(`closing socket(${this.params.name}) does not match any in the activePresences`), issuer),
|
|
433
|
+
...this._getDefaultErrorSettings('sendEventForId', new Error(`closing socket(${this.params.name}) does not match any in the activePresences`), issuer ?? 'unknown issuer'),
|
|
322
434
|
errorCode: 'NTS-SSS-RS1',
|
|
323
435
|
});
|
|
324
436
|
}
|
|
325
437
|
const activePresence = this.presences[activePresenceIndex];
|
|
326
|
-
if (activePresence.issuerLocalId !== issuer) {
|
|
438
|
+
if (issuer && activePresence.issuerLocalId !== issuer) {
|
|
327
439
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
328
|
-
...this._getDefaultErrorSettings('sendEventForId', new Error(`socket
|
|
440
|
+
...this._getDefaultErrorSettings('sendEventForId', new Error(`socket unsubscription for "${issuer}" and ` +
|
|
329
441
|
`"${activePresence.issuerLocalId}" does not match.`), issuer),
|
|
330
442
|
errorCode: 'NTS-SSS-RS2',
|
|
331
443
|
});
|
|
@@ -333,25 +445,32 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
333
445
|
const socketIndex = activePresence.sockets.findIndex((s) => s === socket);
|
|
334
446
|
if (socketIndex === -1) {
|
|
335
447
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
336
|
-
...this._getDefaultErrorSettings('sendEventForId', new Error(`closing socket(${this.params.name}) does not match any in the activePresences`),
|
|
448
|
+
...this._getDefaultErrorSettings('sendEventForId', new Error(`closing socket(${this.params.name}) does not match any in the activePresences`), activePresence.issuerLocalId),
|
|
337
449
|
errorCode: 'NTS-SSS-RS3',
|
|
338
450
|
});
|
|
339
451
|
}
|
|
340
452
|
activePresence.sockets.splice(socketIndex);
|
|
341
|
-
|
|
342
|
-
await
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
453
|
+
await fsm_dynamo_1.DyFM_Array.asyncForEach(this.incomingEvents.filter((event) => event.eventKey === socket_1.DyFM_SocketEvent_Key.unsubscribeSuccessful), async (event) => {
|
|
454
|
+
await event.executeEventTasks(null, issuer);
|
|
455
|
+
});
|
|
456
|
+
/* if (this.getSubscriptionCloseTasks) {
|
|
457
|
+
await DyFM_Array.asyncForEach(
|
|
458
|
+
this.getSubscriptionCloseTasks(),
|
|
459
|
+
async (task: DyFM_SocketEventTask<null>) => {
|
|
460
|
+
await task(null, issuer);
|
|
461
|
+
}
|
|
462
|
+
);
|
|
463
|
+
} */
|
|
346
464
|
if (activePresence.sockets.length === 0) {
|
|
347
465
|
this.presences.splice(activePresenceIndex);
|
|
348
466
|
}
|
|
467
|
+
socket.emit(socket_1.DyFM_SocketEvent_Key.unsubscribeSuccessful, 'unsubscribe was successful');
|
|
349
468
|
socket.disconnect();
|
|
350
469
|
fsm_dynamo_1.DyFM_Log.info(`<x==> socket(${this.params.name}) unsubscription successful (${issuer})`);
|
|
351
470
|
}
|
|
352
471
|
catch (error) {
|
|
353
472
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
354
|
-
...this._getDefaultErrorSettings('sendEventForId', error, issuer),
|
|
473
|
+
...this._getDefaultErrorSettings('sendEventForId', error, issuer ?? 'unknown issuer'),
|
|
355
474
|
errorCode: 'NTS-SSS-RS0',
|
|
356
475
|
message: `socket(${this.params.name}) Subscription Removal failed: "${this.params?.name}"`,
|
|
357
476
|
});
|
|
@@ -471,7 +590,14 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
471
590
|
});
|
|
472
591
|
}
|
|
473
592
|
catch (error) {
|
|
474
|
-
|
|
593
|
+
if (global_settings_const_1.DyNTS_global_settings.log_settings.detailedErrors) {
|
|
594
|
+
if (error instanceof fsm_dynamo_1.DyFM_Error) {
|
|
595
|
+
error.logSimple(`socket(${this.params.name}) Event Broadcast (${event}) failed`);
|
|
596
|
+
}
|
|
597
|
+
else {
|
|
598
|
+
fsm_dynamo_1.DyFM_Log.error(`socket(${this.params.name}) Event Broadcast (${event}) failed`, error);
|
|
599
|
+
}
|
|
600
|
+
}
|
|
475
601
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
476
602
|
...this._getDefaultErrorSettings('broadcastEvent', error),
|
|
477
603
|
errorCode: 'NTS-SSS-BE0',
|
|
@@ -492,6 +618,14 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
492
618
|
error: error,
|
|
493
619
|
};
|
|
494
620
|
}
|
|
621
|
+
/**
|
|
622
|
+
* You can setup tasks for the unsubscribe event in this function
|
|
623
|
+
*/
|
|
624
|
+
/* protected getUnsubscribeTasks?(): DyFM_SocketEventTask<T_SubscriptionContent>[]; */
|
|
625
|
+
/**
|
|
626
|
+
* You can setup preprocesses for the unsubscribe event in this function
|
|
627
|
+
*/
|
|
628
|
+
/* protected getUnsubscribePreProcesses?(): DyFM_SocketEventPreprocessTask[]; */
|
|
495
629
|
/**
|
|
496
630
|
* You can setup tasks for the error event in this function
|
|
497
631
|
*/
|