@push.rocks/smartsocket 2.0.27 → 3.0.0

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 (29) hide show
  1. package/dist_bundle/bundle.js +11562 -7527
  2. package/dist_bundle/bundle.js.map +4 -4
  3. package/dist_ts/00_commitinfo_data.d.ts +1 -1
  4. package/dist_ts/00_commitinfo_data.js +3 -3
  5. package/dist_ts/interfaces/index.d.ts +1 -0
  6. package/dist_ts/interfaces/index.js +2 -1
  7. package/dist_ts/interfaces/message.d.ts +55 -0
  8. package/dist_ts/interfaces/message.js +2 -0
  9. package/dist_ts/smartsocket.classes.smartsocket.d.ts +10 -6
  10. package/dist_ts/smartsocket.classes.smartsocket.js +43 -39
  11. package/dist_ts/smartsocket.classes.smartsocketclient.d.ts +15 -0
  12. package/dist_ts/smartsocket.classes.smartsocketclient.js +148 -74
  13. package/dist_ts/smartsocket.classes.socketconnection.d.ts +15 -4
  14. package/dist_ts/smartsocket.classes.socketconnection.js +139 -62
  15. package/dist_ts/smartsocket.classes.socketrequest.js +18 -12
  16. package/dist_ts/smartsocket.classes.socketserver.d.ts +15 -15
  17. package/dist_ts/smartsocket.classes.socketserver.js +152 -45
  18. package/dist_ts/smartsocket.pluginstyped.d.ts +31 -12
  19. package/package.json +26 -27
  20. package/readme.md +216 -74
  21. package/ts/00_commitinfo_data.ts +2 -2
  22. package/ts/interfaces/index.ts +1 -0
  23. package/ts/interfaces/message.ts +67 -0
  24. package/ts/smartsocket.classes.smartsocket.ts +47 -40
  25. package/ts/smartsocket.classes.smartsocketclient.ts +183 -80
  26. package/ts/smartsocket.classes.socketconnection.ts +161 -74
  27. package/ts/smartsocket.classes.socketrequest.ts +18 -11
  28. package/ts/smartsocket.classes.socketserver.ts +161 -52
  29. package/ts/smartsocket.pluginstyped.ts +35 -12
@@ -15,7 +15,7 @@ export interface ISocketConnectionConstructorOptions {
15
15
  authenticated: boolean;
16
16
  side: TSocketConnectionSide;
17
17
  smartsocketHost: Smartsocket | SmartsocketClient;
18
- socket: pluginsTyped.socketIo.Socket | pluginsTyped.socketIoClient.Socket;
18
+ socket: WebSocket | pluginsTyped.ws.WebSocket;
19
19
  }
20
20
  /**
21
21
  * interface for authentication data
@@ -32,13 +32,24 @@ export declare class SocketConnection {
32
32
  side: TSocketConnectionSide;
33
33
  authenticated: boolean;
34
34
  smartsocketRef: Smartsocket | SmartsocketClient;
35
- socket: pluginsTyped.socketIo.Socket | pluginsTyped.socketIoClient.Socket;
35
+ socket: WebSocket | pluginsTyped.ws.WebSocket;
36
36
  eventSubject: plugins.smartrx.rxjs.Subject<interfaces.TConnectionStatus>;
37
37
  eventStatus: interfaces.TConnectionStatus;
38
38
  private tagStore;
39
39
  tagStoreObservable: plugins.smartrx.rxjs.Subject<interfaces.TTagStore>;
40
40
  remoteTagStoreObservable: plugins.smartrx.rxjs.Subject<interfaces.TTagStore>;
41
41
  constructor(optionsArg: ISocketConnectionConstructorOptions);
42
+ /**
43
+ * Sends a message through the socket
44
+ */
45
+ sendMessage(message: interfaces.ISocketMessage): void;
46
+ /**
47
+ * Handles incoming messages
48
+ */
49
+ handleMessage(messageData: interfaces.ISocketMessage): void;
50
+ private handleFunctionCall;
51
+ private handleFunctionResponse;
52
+ private handleTagUpdate;
42
53
  /**
43
54
  * adds a tag to a connection
44
55
  */
@@ -53,9 +64,9 @@ export declare class SocketConnection {
53
64
  */
54
65
  removeTagById(tagIdArg: interfaces.ITag['id']): Promise<void>;
55
66
  /**
56
- * authenticate the socket
67
+ * authenticate the socket (server side)
57
68
  */
58
- authenticate(): Promise<unknown>;
69
+ authenticate(): Promise<SocketConnection>;
59
70
  /**
60
71
  * listen to function requests
61
72
  */
@@ -28,16 +28,83 @@ export class SocketConnection {
28
28
  this.socket = optionsArg.socket;
29
29
  // standard behaviour that is always true
30
30
  allSocketConnections.add(this);
31
- // handle connection
32
- this.socket.on('connect', async () => {
33
- this.updateStatus('connected');
34
- });
35
- this.socket.on('disconnect', async () => {
36
- logger.log('info', `SocketConnection with >alias ${this.alias} on >side ${this.side} disconnected`);
37
- await this.disconnect();
38
- allSocketConnections.remove(this);
39
- this.eventSubject.next('disconnected');
31
+ }
32
+ /**
33
+ * Sends a message through the socket
34
+ */
35
+ sendMessage(message) {
36
+ if (this.socket.readyState === 1) { // WebSocket.OPEN
37
+ this.socket.send(JSON.stringify(message));
38
+ }
39
+ }
40
+ /**
41
+ * Handles incoming messages
42
+ */
43
+ handleMessage(messageData) {
44
+ switch (messageData.type) {
45
+ case 'function':
46
+ this.handleFunctionCall(messageData);
47
+ break;
48
+ case 'functionResponse':
49
+ this.handleFunctionResponse(messageData);
50
+ break;
51
+ case 'tagUpdate':
52
+ this.handleTagUpdate(messageData);
53
+ break;
54
+ default:
55
+ // Authentication messages are handled by the server/client classes
56
+ break;
57
+ }
58
+ }
59
+ handleFunctionCall(messageData) {
60
+ const requestData = {
61
+ funcCallData: {
62
+ funcName: messageData.payload.funcName,
63
+ funcDataArg: messageData.payload.funcData,
64
+ },
65
+ shortId: messageData.id,
66
+ };
67
+ const referencedFunction = this.smartsocketRef.socketFunctions.findSync((socketFunctionArg) => {
68
+ return socketFunctionArg.name === requestData.funcCallData.funcName;
40
69
  });
70
+ if (referencedFunction) {
71
+ const localSocketRequest = new SocketRequest(this.smartsocketRef, {
72
+ side: 'responding',
73
+ originSocketConnection: this,
74
+ shortId: requestData.shortId,
75
+ funcCallData: requestData.funcCallData,
76
+ });
77
+ localSocketRequest.createResponse();
78
+ }
79
+ else {
80
+ logger.log('warn', `function ${requestData.funcCallData.funcName} not found or out of scope`);
81
+ }
82
+ }
83
+ handleFunctionResponse(messageData) {
84
+ const responseData = {
85
+ funcCallData: {
86
+ funcName: messageData.payload.funcName,
87
+ funcDataArg: messageData.payload.funcData,
88
+ },
89
+ shortId: messageData.id,
90
+ };
91
+ const targetSocketRequest = SocketRequest.getSocketRequestById(this.smartsocketRef, responseData.shortId);
92
+ if (targetSocketRequest) {
93
+ targetSocketRequest.handleResponse(responseData);
94
+ }
95
+ }
96
+ handleTagUpdate(messageData) {
97
+ const tagStoreArg = messageData.payload.tags;
98
+ if (!plugins.smartjson.deepEqualObjects(this.tagStore, tagStoreArg)) {
99
+ this.tagStore = tagStoreArg;
100
+ // Echo back to confirm
101
+ this.sendMessage({
102
+ type: 'tagUpdate',
103
+ payload: { tags: this.tagStore },
104
+ });
105
+ this.tagStoreObservable.next(this.tagStore);
106
+ }
107
+ this.remoteTagStoreObservable.next(tagStoreArg);
41
108
  }
42
109
  /**
43
110
  * adds a tag to a connection
@@ -57,7 +124,10 @@ export class SocketConnection {
57
124
  done.resolve();
58
125
  }
59
126
  });
60
- this.socket.emit('updateTagStore', this.tagStore);
127
+ this.sendMessage({
128
+ type: 'tagUpdate',
129
+ payload: { tags: this.tagStore },
130
+ });
61
131
  await done.promise;
62
132
  }
63
133
  /**
@@ -73,35 +143,60 @@ export class SocketConnection {
73
143
  async removeTagById(tagIdArg) {
74
144
  delete this.tagStore[tagIdArg];
75
145
  this.tagStoreObservable.next(this.tagStore);
76
- this.socket.emit('updateTagStore', this.tagStore);
146
+ this.sendMessage({
147
+ type: 'tagUpdate',
148
+ payload: { tags: this.tagStore },
149
+ });
77
150
  }
78
151
  // authenticating --------------------------
79
152
  /**
80
- * authenticate the socket
153
+ * authenticate the socket (server side)
81
154
  */
82
155
  authenticate() {
83
156
  const done = plugins.smartpromise.defer();
84
- this.socket.on('dataAuth', async (dataArg) => {
85
- logger.log('info', 'received authentication data...');
86
- this.socket.removeAllListeners('dataAuth');
87
- if (dataArg.alias) {
88
- // TODO: authenticate password
89
- this.alias = dataArg.alias;
90
- this.authenticated = true;
91
- this.socket.emit('authenticated');
92
- logger.log('ok', `socket with >>alias ${this.alias} is authenticated!`);
93
- done.resolve(this);
157
+ // Set up message handler for authentication
158
+ const messageHandler = (event) => {
159
+ try {
160
+ const data = typeof event.data === 'string' ? event.data : event.data.toString();
161
+ const message = JSON.parse(data);
162
+ if (message.type === 'auth') {
163
+ const authData = message.payload;
164
+ logger.log('info', 'received authentication data...');
165
+ if (authData.alias) {
166
+ this.alias = authData.alias;
167
+ this.authenticated = true;
168
+ // Send authentication response
169
+ this.sendMessage({
170
+ type: 'authResponse',
171
+ payload: { success: true },
172
+ });
173
+ logger.log('ok', `socket with >>alias ${this.alias} is authenticated!`);
174
+ done.resolve(this);
175
+ }
176
+ else {
177
+ this.authenticated = false;
178
+ this.sendMessage({
179
+ type: 'authResponse',
180
+ payload: { success: false, error: 'No alias provided' },
181
+ });
182
+ this.disconnect();
183
+ done.reject('a socket tried to connect, but could not authenticate.');
184
+ }
185
+ }
94
186
  }
95
- else {
96
- this.authenticated = false;
97
- await this.disconnect();
98
- done.reject('a socket tried to connect, but could not authenticated.');
187
+ catch (err) {
188
+ // Not a valid message, ignore
99
189
  }
100
- });
190
+ };
191
+ this.socket.addEventListener('message', messageHandler);
192
+ // Request authentication
101
193
  const requestAuthPayload = {
102
- serverAlias: this.smartsocketRef.alias,
194
+ type: 'authRequest',
195
+ payload: {
196
+ serverAlias: this.smartsocketRef.alias,
197
+ },
103
198
  };
104
- this.socket.emit('requestAuth', requestAuthPayload);
199
+ this.sendMessage(requestAuthPayload);
105
200
  return done.promise;
106
201
  }
107
202
  // listening -------------------------------
@@ -111,39 +206,18 @@ export class SocketConnection {
111
206
  listenToFunctionRequests() {
112
207
  const done = plugins.smartpromise.defer();
113
208
  if (this.authenticated) {
114
- this.socket.on('function', (dataArg) => {
115
- // check if requested function is available to the socket's scope
116
- // logger.log('info', 'function request received');
117
- const referencedFunction = this.smartsocketRef.socketFunctions.findSync((socketFunctionArg) => {
118
- return socketFunctionArg.name === dataArg.funcCallData.funcName;
119
- });
120
- if (referencedFunction) {
121
- // logger.log('ok', 'function in access scope');
122
- const localSocketRequest = new SocketRequest(this.smartsocketRef, {
123
- side: 'responding',
124
- originSocketConnection: this,
125
- shortId: dataArg.shortId,
126
- funcCallData: dataArg.funcCallData,
127
- });
128
- localSocketRequest.createResponse(); // takes care of creating response and sending it back
209
+ // Set up message handler for all messages
210
+ const messageHandler = (event) => {
211
+ try {
212
+ const data = typeof event.data === 'string' ? event.data : event.data.toString();
213
+ const message = JSON.parse(data);
214
+ this.handleMessage(message);
129
215
  }
130
- else {
131
- logger.log('warn', 'function not existent or out of access scope');
216
+ catch (err) {
217
+ // Not a valid JSON message, ignore
132
218
  }
133
- });
134
- this.socket.on('functionResponse', (dataArg) => {
135
- // logger.log('info', `received response for request with id ${dataArg.shortId}`);
136
- const targetSocketRequest = SocketRequest.getSocketRequestById(this.smartsocketRef, dataArg.shortId);
137
- targetSocketRequest.handleResponse(dataArg);
138
- });
139
- this.socket.on('updateTagStore', async (tagStoreArg) => {
140
- if (!plugins.smartjson.deepEqualObjects(this.tagStore, tagStoreArg)) {
141
- this.tagStore = tagStoreArg;
142
- this.socket.emit('updateTagStore', this.tagStore);
143
- this.tagStoreObservable.next(this.tagStore);
144
- }
145
- this.remoteTagStoreObservable.next(tagStoreArg);
146
- });
219
+ };
220
+ this.socket.addEventListener('message', messageHandler);
147
221
  logger.log('info', `now listening to function requests for ${this.alias} on side ${this.side}`);
148
222
  done.resolve(this);
149
223
  }
@@ -156,7 +230,10 @@ export class SocketConnection {
156
230
  }
157
231
  // disconnecting ----------------------
158
232
  async disconnect() {
159
- this.socket.disconnect(true);
233
+ if (this.socket.readyState === 1 || this.socket.readyState === 0) {
234
+ this.socket.close();
235
+ }
236
+ allSocketConnections.remove(this);
160
237
  this.updateStatus('disconnected');
161
238
  }
162
239
  updateStatus(statusArg) {
@@ -166,4 +243,4 @@ export class SocketConnection {
166
243
  this.eventStatus = statusArg;
167
244
  }
168
245
  }
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFlBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQWlDLE1BQU0sd0NBQXdDLENBQUM7QUFFdEcsWUFBWTtBQUNaLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQTJCbEQsaUJBQWlCO0FBQ2pCLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQW9CLENBQUM7QUFFaEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYzNCLFlBQVksVUFBK0M7UUFYcEQsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFJL0IsaUJBQVksR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBZ0MsQ0FBQztRQUNoRixnQkFBVyxHQUFpQyxLQUFLLENBQUM7UUFFakQsYUFBUSxHQUF5QixFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQXdCLENBQUM7UUFDOUUsNkJBQXdCLEdBQUcsSUFBSSxPQUFP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
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFlBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQWlDLE1BQU0sd0NBQXdDLENBQUM7QUFFdEcsWUFBWTtBQUNaLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQTJCbEQsaUJBQWlCO0FBQ2pCLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQW9CLENBQUM7QUFFaEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYzNCLFlBQVksVUFBK0M7UUFYcEQsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFJL0IsaUJBQVksR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBZ0MsQ0FBQztRQUNoRixnQkFBVyxHQUFpQyxLQUFLLENBQUM7UUFFakQsYUFBUSxHQUF5QixFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQXdCLENBQUM7UUFDOUUsNkJBQXdCLEdBQUcsSUFBSSxPQUFP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
@@ -1,4 +1,5 @@
1
1
  import * as plugins from './smartsocket.plugins.js';
2
+ import * as interfaces from './interfaces/index.js';
2
3
  // import interfaces
3
4
  import { SocketFunction, } from './smartsocket.classes.socketfunction.js';
4
5
  // import classes
@@ -30,18 +31,21 @@ export class SocketRequest {
30
31
  * dispatches a socketrequest from the requesting to the receiving side
31
32
  */
32
33
  dispatch() {
33
- const requestData = {
34
- funcCallData: this.funcCallData,
35
- shortId: this.shortid,
34
+ const message = {
35
+ type: 'function',
36
+ id: this.shortid,
37
+ payload: {
38
+ funcName: this.funcCallData.funcName,
39
+ funcData: this.funcCallData.funcDataArg,
40
+ },
36
41
  };
37
- this.originSocketConnection.socket.emit('function', requestData);
42
+ this.originSocketConnection.sendMessage(message);
38
43
  return this.done.promise;
39
44
  }
40
45
  /**
41
46
  * handles the response that is received by the requesting side
42
47
  */
43
48
  async handleResponse(responseDataArg) {
44
- // logger.log('info', 'handling response!');
45
49
  this.done.resolve(responseDataArg.funcCallData);
46
50
  this.smartsocketRef.socketRequests.remove(this);
47
51
  }
@@ -55,18 +59,20 @@ export class SocketRequest {
55
59
  logger.log('error', `There is no SocketFunction defined for ${this.funcCallData.funcName}`);
56
60
  return;
57
61
  }
58
- // logger.log('info', `invoking ${targetSocketFunction.name}`);
59
62
  targetSocketFunction
60
63
  .invoke(this.funcCallData, this.originSocketConnection)
61
64
  .then((resultData) => {
62
- // logger.log('info', 'got resultData. Sending it to requesting party.');
63
- const responseData = {
64
- funcCallData: resultData,
65
- shortId: this.shortid,
65
+ const message = {
66
+ type: 'functionResponse',
67
+ id: this.shortid,
68
+ payload: {
69
+ funcName: resultData.funcName,
70
+ funcData: resultData.funcDataArg,
71
+ },
66
72
  };
67
- this.originSocketConnection.socket.emit('functionResponse', responseData);
73
+ this.originSocketConnection.sendMessage(message);
68
74
  this.smartsocketRef.socketRequests.remove(this);
69
75
  });
70
76
  }
71
77
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFFcEQsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCxjQUFjLEdBR2YsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRCxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQTJCL0UsaUJBQWlCO0FBQ2pCLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFNBQVM7SUFDRixNQUFNLENBQUMsb0JBQW9CLENBQ2hDLGNBQStDLEVBQy9DLFVBQWtCO1FBRWxCLE9BQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ2pFLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFZRCxZQUNFLGlCQUFrRCxFQUNsRCxVQUErQztRQVpqRCxXQUFXO1FBQ0osV0FBTSxHQUF5QixLQUFLLENBQUM7UUFLckMsU0FBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFzQyxDQUFDO1FBUTdFLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDNUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztRQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELHdDQUF3QztJQUV4Qzs7T0FFRztJQUNJLFFBQVE7UUFDYixNQUFNLFdBQVcsR0FBZ0M7WUFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWMsQ0FBQyxlQUE0QztRQUN0RSw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsd0NBQXdDO0lBRXhDOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsTUFBTSxvQkFBb0IsR0FBc0IsY0FBYyxDQUFDLHVCQUF1QixDQUNwRixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDM0IsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDBDQUEwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUYsT0FBTztRQUNULENBQUM7UUFDRCwrREFBK0Q7UUFDL0Qsb0JBQW9CO2FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQzthQUN0RCxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNuQix5RUFBeUU7WUFDekUsTUFBTSxZQUFZLEdBQWdDO2dCQUNoRCxZQUFZLEVBQUUsVUFBVTtnQkFDeEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3RCLENBQUM7WUFDRixJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YifQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGNBQWMsR0FHZixNQUFNLHlDQUF5QyxDQUFDO0FBRWpELGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBMkIvRSxpQkFBaUI7QUFDakIsTUFBTSxPQUFPLGFBQWE7SUFDeEIsU0FBUztJQUNGLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsY0FBK0MsRUFDL0MsVUFBa0I7UUFFbEIsT0FBTyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDakUsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVlELFlBQ0UsaUJBQWtELEVBQ2xELFVBQStDO1FBWmpELFdBQVc7UUFDSixXQUFNLEdBQXlCLEtBQUssQ0FBQztRQUtyQyxTQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQXNDLENBQUM7UUFRN0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUM1QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDLHNCQUFzQixDQUFDO1FBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsd0NBQXdDO0lBRXhDOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE1BQU0sT0FBTyxHQUErRDtZQUMxRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDaEIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVE7Z0JBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7YUFDeEM7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBNEM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsd0NBQXdDO0lBRXhDOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsTUFBTSxvQkFBb0IsR0FBc0IsY0FBYyxDQUFDLHVCQUF1QixDQUNwRixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDM0IsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDBDQUEwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUYsT0FBTztRQUNULENBQUM7UUFFRCxvQkFBb0I7YUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDO2FBQ3RELElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25CLE1BQU0sT0FBTyxHQUErRDtnQkFDMUUsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO29CQUM3QixRQUFRLEVBQUUsVUFBVSxDQUFDLFdBQVc7aUJBQ2pDO2FBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGIn0=
@@ -1,35 +1,35 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  import * as pluginsTyped from './smartsocket.pluginstyped.js';
4
2
  import { Smartsocket } from './smartsocket.classes.smartsocket.js';
5
3
  /**
6
- * class socketServer
7
- * handles the attachment of socketIo to whatever server is in play
4
+ * class SocketServer
5
+ * handles the WebSocket server in standalone mode, or provides hooks for smartserve integration
8
6
  */
9
7
  export declare class SocketServer {
10
8
  private smartsocket;
11
- private httpServerDeferred;
12
9
  private httpServer;
10
+ private wsServer;
13
11
  /**
14
- * wether httpServer is standalone
12
+ * whether httpServer is standalone (created by us)
15
13
  */
16
14
  private standaloneServer;
17
15
  constructor(smartSocketInstance: Smartsocket);
18
16
  /**
19
- * starts the server with another server
20
- * also works with an express style server
17
+ * Starts listening to incoming websocket connections (standalone mode).
18
+ * If no port is specified, this is a no-op (hooks mode via smartserve).
21
19
  */
22
- setExternalServer(serverType: 'smartexpress', serverArg: pluginsTyped.typedserver.servertools.Server): Promise<void>;
20
+ start(): Promise<void>;
23
21
  /**
24
- * gets the server for socket.io
22
+ * closes the server
25
23
  */
26
- getServerForSocketIo(): Promise<pluginsTyped.http.Server<typeof pluginsTyped.http.IncomingMessage, typeof pluginsTyped.http.ServerResponse> | pluginsTyped.https.Server<typeof pluginsTyped.http.IncomingMessage, typeof pluginsTyped.http.ServerResponse>>;
24
+ stop(): Promise<void>;
27
25
  /**
28
- * starts listening to incoming sockets:
26
+ * Returns WebSocket hooks for integration with smartserve.
27
+ * Pass these hooks to SmartServe's websocket config.
29
28
  */
30
- start(): Promise<void>;
29
+ getSmartserveWebSocketHooks(): pluginsTyped.ISmartserveWebSocketHooks;
31
30
  /**
32
- * closes the server
31
+ * Creates a WebSocket-like object from a smartserve peer
32
+ * This allows our SocketConnection to work with both native WebSocket and smartserve peers
33
33
  */
34
- stop(): Promise<void>;
34
+ private createWsLikeFromPeer;
35
35
  }