@cimo/websocket 1.2.40 → 1.3.42

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/README.md +12 -18
  2. package/dist/eslint.customRule.d.ts +20 -0
  3. package/dist/eslint.customRule.js +37 -0
  4. package/dist/eslint.customRule.js.map +1 -0
  5. package/dist/src/HelperSrc.d.ts +2 -0
  6. package/dist/src/HelperSrc.js +18 -0
  7. package/dist/src/HelperSrc.js.map +1 -0
  8. package/dist/src/Main.js.map +1 -0
  9. package/dist/{client → src/client}/Manager.d.ts +10 -10
  10. package/dist/src/client/Manager.js +241 -0
  11. package/dist/src/client/Manager.js.map +1 -0
  12. package/dist/src/client/Model.d.ts +18 -0
  13. package/dist/{client → src/client}/Model.js.map +1 -1
  14. package/dist/{server → src/server}/Manager.d.ts +17 -18
  15. package/dist/{server → src/server}/Manager.js +249 -209
  16. package/dist/src/server/Manager.js.map +1 -0
  17. package/dist/{server → src/server}/Model.d.ts +11 -9
  18. package/dist/src/server/Model.js.map +1 -0
  19. package/dist/src/tsconfig.build_main.tsbuildinfo +1 -0
  20. package/dist/src/tsconfig.build_server.tsbuildinfo +1 -0
  21. package/dist/tsconfig.tsc.tsbuildinfo +1 -0
  22. package/package.json +9 -7
  23. package/dist/Main.js.map +0 -1
  24. package/dist/client/Manager.js +0 -190
  25. package/dist/client/Manager.js.map +0 -1
  26. package/dist/client/Model.d.ts +0 -16
  27. package/dist/server/Manager.js.map +0 -1
  28. package/dist/server/Model.js.map +0 -1
  29. package/dist/tsconfig.build_server.tsbuildinfo +0 -1
  30. /package/dist/{Main.d.ts → src/Main.d.ts} +0 -0
  31. /package/dist/{Main.js → src/Main.js} +0 -0
  32. /package/dist/{client → src/client}/Model.js +0 -0
  33. /package/dist/{server → src/server}/Model.js +0 -0
  34. /package/dist/{client → src}/tsconfig.build_client.tsbuildinfo +0 -0
package/README.md CHANGED
@@ -5,8 +5,8 @@ Writed with native Typescript code and no dependencies are used.
5
5
 
6
6
  ## Pack
7
7
 
8
- 1. npm run pack
9
- 2. Copy the file "package_name-x.x.x.tgz" in the project root folder.
8
+ 1. npm run build
9
+ 2. Copy the file "/build/package_name-x.x.x.tgz" in the project root folder.
10
10
  3. In the "package.json" file insert: "@cimo/package_name": "file:package_name-x.x.x.tgz"
11
11
 
12
12
  ## Publish
@@ -26,7 +26,7 @@ Writed with native Typescript code and no dependencies are used.
26
26
  ```
27
27
  ...
28
28
 
29
- import { CwsServer } from "@cimo/websocket";
29
+ import { CwsServer } from "@cimo/websocket/dist/src/Main";
30
30
 
31
31
  // Source
32
32
  import * as ControllerTest from "../controller/Test";
@@ -45,16 +45,15 @@ ControllerTester.websocket(cwsServer);
45
45
  ```
46
46
  ...
47
47
 
48
- import { CwsServer } from "@cimo/websocket";
48
+ import { CwsServer } from "@cimo/websocket/dist/src/Main";
49
49
 
50
50
  ...
51
51
 
52
52
  export const websocket = (cwsServer: CwsServer, cp: Cp) => {
53
- cwsServer.receiveData("action_test", (clientId, data) => {
54
- if (typeof data === "string") {
55
- const requestWsData = { test: "end" } as Record<string, string>;
56
- cwsServer.sendData(clientId, 1, JSON.stringify(requestWsData), "action_test");
57
- }
53
+ cwsServer.receiveData("action_test", (clientId, message) => {
54
+ console.log(message);
55
+
56
+ cwsServer.sendData(clientId, "text", { test: "end" }, "action_test");
58
57
  });
59
58
  };
60
59
 
@@ -68,25 +67,20 @@ export const websocket = (cwsServer: CwsServer, cp: Cp) => {
68
67
  ```
69
68
  ...
70
69
 
71
- import CwsClient from "@cimo/websocket/dist/client/Manager";
70
+ import CwsClient from "@cimo/websocket/dist/src/client/Manager";
72
71
 
73
72
  ...
74
73
 
75
74
  const cwsClient = new CwsClient("wss://localhost");
76
75
 
77
76
  cwsClient.checkConnection(() => {
78
- cwsClient.receiveData("action_test", (data) => {
79
- if (typeof data === "string") {
80
- const responseWsData = JSON.parse(data) as Record<string, string>;
81
-
82
- console.log(responseWsData);
83
- }
77
+ cwsClient.receiveData("action_test", (message) => {
78
+ console.log(message);
84
79
  });
85
80
  });
86
81
 
87
82
  elementButton.addEventListener("click", (event) => {
88
- const requestWsData = { test: "start" } as Record<string, string>;
89
- cwsClient.sendData(1, JSON.stringify(requestWsData), "action_test");
83
+ cwsClient.sendData("text", { test: "start" }, "action_test");
90
84
  });
91
85
 
92
86
  ...
@@ -0,0 +1,20 @@
1
+ import { TSESTree } from "@typescript-eslint/utils";
2
+ import { RuleContext } from "@typescript-eslint/utils/dist/ts-eslint";
3
+ export declare const rules: {
4
+ "disallow-array-for-object-type": {
5
+ meta: {
6
+ type: string;
7
+ docs: {
8
+ description: string;
9
+ recommended: boolean;
10
+ };
11
+ messages: {
12
+ disallowArrayForObjectType: string;
13
+ };
14
+ schema: never[];
15
+ };
16
+ create(context: RuleContext<"disallowArrayForObjectType", []>): {
17
+ TSArrayType(node: TSESTree.TSArrayType): void;
18
+ };
19
+ };
20
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rules = void 0;
4
+ const utils_1 = require("@typescript-eslint/utils");
5
+ exports.rules = {
6
+ "disallow-array-for-object-type": {
7
+ meta: {
8
+ type: "problem",
9
+ docs: {
10
+ description: "Disallow array for object type.",
11
+ recommended: false
12
+ },
13
+ messages: {
14
+ disallowArrayForObjectType: "Array for object type are disallowed."
15
+ },
16
+ schema: []
17
+ },
18
+ create(context) {
19
+ const parserServices = utils_1.ESLintUtils.getParserServices(context);
20
+ return {
21
+ TSArrayType(node) {
22
+ const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node.elementType);
23
+ const checker = parserServices.program.getTypeChecker();
24
+ const type = checker.getTypeAtLocation(tsNode);
25
+ const indexType = type.getStringIndexType();
26
+ if (indexType) {
27
+ context.report({
28
+ node,
29
+ messageId: "disallowArrayForObjectType"
30
+ });
31
+ }
32
+ }
33
+ };
34
+ }
35
+ }
36
+ };
37
+ //# sourceMappingURL=eslint.customRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.customRule.js","sourceRoot":"","sources":["../eslint.customRule.ts"],"names":[],"mappings":";;;AAAA,oDAAiE;AAGpD,QAAA,KAAK,GAAG;IACjB,gCAAgC,EAAE;QAC9B,IAAI,EAAE;YACF,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACF,WAAW,EAAE,iCAAiC;gBAC9C,WAAW,EAAE,KAAK;aACrB;YACD,QAAQ,EAAE;gBACN,0BAA0B,EAAE,uCAAuC;aACtE;YACD,MAAM,EAAE,EAAE;SACb;QACD,MAAM,CAAC,OAAsD;YACzD,MAAM,cAAc,GAAG,mBAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE9D,OAAO;gBACH,WAAW,CAAC,IAA0B;oBAClC,MAAM,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1E,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;oBACxD,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5C,IAAI,SAAS,EAAE,CAAC;wBACZ,OAAO,CAAC,MAAM,CAAC;4BACX,IAAI;4BACJ,SAAS,EAAE,4BAA4B;yBAC1C,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;aACJ,CAAC;QACN,CAAC;KACJ;CACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const writeLog: (tag: string, value: string | Record<string, unknown> | Error) => void;
2
+ export declare const isJson: (value: string) => boolean;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isJson = exports.writeLog = void 0;
4
+ const writeLog = (tag, value) => {
5
+ console.log(`WriteLog => ${tag}: `, value);
6
+ };
7
+ exports.writeLog = writeLog;
8
+ const isJson = (value) => {
9
+ try {
10
+ JSON.parse(value);
11
+ return true;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ };
17
+ exports.isJson = isJson;
18
+ //# sourceMappingURL=HelperSrc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelperSrc.js","sourceRoot":"","sources":["../../src/HelperSrc.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAA+C,EAAQ,EAAE;IAE3F,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC;AAHW,QAAA,QAAQ,YAGnB;AAEK,MAAM,MAAM,GAAG,CAAC,KAAa,EAAW,EAAE;IAC7C,IAAI,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAElB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC;AARW,QAAA,MAAM,UAQjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/Main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAyC;AAGhC,oBAHF,iBAAS,CAGE;AADlB,iEAAiD"}
@@ -1,26 +1,26 @@
1
1
  import * as Model from "./Model";
2
2
  export default class Manager {
3
- private address;
4
3
  private ws;
4
+ private address;
5
5
  private clientId;
6
- private handleReceiveDataList;
6
+ private handleResponseMap;
7
7
  private countCheckConnection;
8
8
  private intervalCheckConnection;
9
9
  private callbackCheckConnection;
10
- private intervalReconnection;
11
10
  private countCheckReconnection;
12
11
  private countCheckLimit;
12
+ private intervalReconnection;
13
+ private handleResponse;
14
+ private cleanup;
15
+ private create;
16
+ constructor(addressValue: string, countCheckLimitValue?: number);
13
17
  getClientId: () => string;
14
- constructor(address: string, countCheckLimit?: number);
15
- sendData: (mode: number, data: string | ArrayBuffer, tag?: string, timeout?: number) => void;
18
+ sendData: (mode: string, message: Model.TsendMessage, tag?: string, timeout?: number) => void;
19
+ receiveData: <T>(tag: string, callback: (message: T) => void) => void;
16
20
  sendDataUpload: (filename: string, file: ArrayBuffer) => void;
17
- sendDataBroadcast: (data: string) => void;
18
- receiveData: (tag: string, callback: Model.IcallbackReceiveMessage) => void;
19
21
  receiveDataDownload: (callback: Model.IcallbackReceiveDownload) => void;
20
22
  receiveDataOff: (tag: string) => void;
23
+ sendDataBroadcast: (message: Model.TsendMessage) => void;
21
24
  checkConnection: (callback: (mode: string) => void) => void;
22
25
  checkReconnection: (mode: string) => void;
23
- private create;
24
- private handleReceiveData;
25
- private cleanup;
26
26
  }
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const HelperSrc = __importStar(require("../HelperSrc"));
37
+ class Manager {
38
+ ws;
39
+ address;
40
+ clientId;
41
+ handleResponseMap;
42
+ countCheckConnection;
43
+ intervalCheckConnection;
44
+ callbackCheckConnection;
45
+ countCheckReconnection;
46
+ countCheckLimit;
47
+ intervalReconnection;
48
+ handleResponse = (tag, message) => {
49
+ for (const [index, callback] of this.handleResponseMap) {
50
+ if (tag === index) {
51
+ callback(message);
52
+ return;
53
+ }
54
+ }
55
+ };
56
+ cleanup = () => {
57
+ this.ws = undefined;
58
+ };
59
+ create = () => {
60
+ this.ws = new WebSocket(this.address);
61
+ this.ws.binaryType = "arraybuffer";
62
+ this.ws.onopen = () => {
63
+ HelperSrc.writeLog("@cimo/websocket - Client - Manager.ts - create() - onOpen()", "Connection open.");
64
+ };
65
+ let messageTagDownload = "";
66
+ this.ws.onmessage = (event) => {
67
+ if (this.ws) {
68
+ if (typeof event.data === "string") {
69
+ const messageObject = JSON.parse(event.data);
70
+ if (messageObject.tag === "cws_client_connection") {
71
+ if (!this.clientId) {
72
+ this.sendData("text", "", "client_connected");
73
+ }
74
+ else {
75
+ this.sendData("text", "", "client_reconnection");
76
+ this.checkReconnection("end");
77
+ }
78
+ this.clientId = messageObject.data;
79
+ }
80
+ else if (messageObject.tag === "cws_download") {
81
+ messageTagDownload = messageObject.tag;
82
+ }
83
+ this.handleResponse(messageObject.tag, messageObject.data);
84
+ }
85
+ else if (typeof event.data !== "string" && messageTagDownload) {
86
+ const view = new DataView(event.data);
87
+ this.handleResponse(messageTagDownload, view);
88
+ messageTagDownload = "";
89
+ }
90
+ }
91
+ };
92
+ this.ws.onclose = () => {
93
+ HelperSrc.writeLog("@cimo/websocket - Client - Manager.ts - create() - onClose()", "Connection close.");
94
+ this.cleanup();
95
+ this.checkReconnection("start");
96
+ };
97
+ };
98
+ constructor(addressValue, countCheckLimitValue = 25) {
99
+ this.ws = undefined;
100
+ this.address = addressValue;
101
+ this.clientId = "";
102
+ this.handleResponseMap = new Map();
103
+ this.countCheckConnection = 0;
104
+ this.intervalCheckConnection = undefined;
105
+ this.callbackCheckConnection = undefined;
106
+ this.countCheckReconnection = 0;
107
+ this.countCheckLimit = countCheckLimitValue;
108
+ this.intervalReconnection = undefined;
109
+ this.create();
110
+ }
111
+ getClientId = () => {
112
+ return this.clientId;
113
+ };
114
+ sendData = (mode, message, tag = "", timeout = 0) => {
115
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
116
+ if (!(message instanceof ArrayBuffer) && !(typeof message === "string") && !(typeof message === "object" && message !== null)) {
117
+ throw new Error("@cimo/websocket - Client - Manager.ts - sendData() => Invalid message type!");
118
+ }
119
+ if (mode === "text" && !(message instanceof ArrayBuffer)) {
120
+ let resultMessage = "";
121
+ if (typeof message === "string") {
122
+ resultMessage = message;
123
+ }
124
+ else if (typeof message === "object") {
125
+ resultMessage = JSON.stringify(message);
126
+ }
127
+ const messageObject = {
128
+ tag: `cws_${tag}`,
129
+ data: window.btoa(String.fromCharCode(...new TextEncoder().encode(resultMessage)))
130
+ };
131
+ if (timeout > 0) {
132
+ const timeoutEvent = setTimeout(() => {
133
+ clearTimeout(timeoutEvent);
134
+ if (this.ws) {
135
+ this.ws.send(JSON.stringify(messageObject));
136
+ }
137
+ }, timeout);
138
+ }
139
+ else {
140
+ this.ws.send(JSON.stringify(messageObject));
141
+ }
142
+ }
143
+ else if (mode === "binary" && message instanceof ArrayBuffer) {
144
+ this.ws.send(message);
145
+ }
146
+ else {
147
+ throw new Error("@cimo/websocket - Client - Manager.ts - sendData() => Message type doesn't match mode!");
148
+ }
149
+ }
150
+ else {
151
+ throw new Error("@cimo/websocket - Client - Manager.ts - sendData() => Client not connected!");
152
+ }
153
+ };
154
+ receiveData = (tag, callback) => {
155
+ this.handleResponseMap.set(`cws_${tag}`, (message) => {
156
+ let resultMessage;
157
+ if (typeof message === "string") {
158
+ const decoded = window.atob(message);
159
+ if (!HelperSrc.isJson(decoded)) {
160
+ resultMessage = decoded;
161
+ }
162
+ else {
163
+ resultMessage = JSON.parse(decoded);
164
+ }
165
+ }
166
+ else {
167
+ resultMessage = message;
168
+ }
169
+ callback(resultMessage);
170
+ });
171
+ };
172
+ sendDataUpload = (filename, file) => {
173
+ this.sendData("text", filename, "upload");
174
+ this.sendData("binary", file, "", 100);
175
+ };
176
+ receiveDataDownload = (callback) => {
177
+ let filename = "";
178
+ this.receiveData("download", (message) => {
179
+ if (typeof message === "string") {
180
+ filename = message;
181
+ }
182
+ else {
183
+ callback(message, filename);
184
+ filename = "";
185
+ }
186
+ });
187
+ };
188
+ receiveDataOff = (tag) => {
189
+ if (this.handleResponseMap.has(`cws_${tag}`)) {
190
+ this.handleResponseMap.delete(`cws_${tag}`);
191
+ }
192
+ };
193
+ sendDataBroadcast = (message) => {
194
+ this.sendData("text", message, "broadcast");
195
+ };
196
+ checkConnection = (callback) => {
197
+ if (this.countCheckConnection > this.countCheckLimit) {
198
+ clearInterval(this.intervalCheckConnection);
199
+ return;
200
+ }
201
+ if (!this.callbackCheckConnection) {
202
+ this.callbackCheckConnection = callback;
203
+ }
204
+ if (this.ws) {
205
+ if (this.ws.readyState === WebSocket.OPEN) {
206
+ clearInterval(this.intervalCheckConnection);
207
+ this.countCheckConnection = 0;
208
+ this.callbackCheckConnection("connection");
209
+ }
210
+ else if (this.countCheckConnection === 0) {
211
+ this.intervalCheckConnection = setInterval(() => {
212
+ this.countCheckConnection++;
213
+ this.checkConnection(callback);
214
+ }, 5000);
215
+ }
216
+ }
217
+ };
218
+ checkReconnection = (mode) => {
219
+ if (this.countCheckReconnection > this.countCheckLimit) {
220
+ clearInterval(this.intervalReconnection);
221
+ return;
222
+ }
223
+ if (mode === "end") {
224
+ clearInterval(this.intervalReconnection);
225
+ this.countCheckReconnection = 0;
226
+ if (this.callbackCheckConnection) {
227
+ this.callbackCheckConnection("reconnection");
228
+ }
229
+ }
230
+ else if (mode === "start" && this.countCheckReconnection === 0) {
231
+ this.intervalReconnection = setInterval(() => {
232
+ this.countCheckReconnection++;
233
+ if (!this.ws) {
234
+ this.create();
235
+ }
236
+ }, 5000);
237
+ }
238
+ };
239
+ }
240
+ exports.default = Manager;
241
+ //# sourceMappingURL=Manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../../src/client/Manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface Iclient {
2
+ socket: WebSocket;
3
+ }
4
+ export interface IcallbackHandleResponse {
5
+ (message: ThandleMessage): void;
6
+ }
7
+ export interface IcallbackReceiveDownload {
8
+ (message: DataView, filename: string): void;
9
+ }
10
+ export interface Imessage {
11
+ tag: string;
12
+ data: string;
13
+ }
14
+ export interface Ifile {
15
+ filename: string;
16
+ }
17
+ export type TsendMessage = string | Record<string, unknown> | ArrayBuffer;
18
+ export type ThandleMessage = string | DataView;
@@ -1 +1 @@
1
- {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/client/Model.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/client/Model.ts"],"names":[],"mappings":""}
@@ -1,29 +1,28 @@
1
1
  import * as Model from "./Model";
2
2
  export default class Manager {
3
- private clientList;
4
3
  private secretKey;
5
- private modePing;
6
4
  private timePing;
7
- private handleReceiveDataList;
8
- getClientList: () => Map<string, Model.Iclient>;
9
- constructor(server: Model.IhttpServer.Server | Model.IhttpsServer.Server, secretKey: string, modePing?: number, timePing?: number);
10
- sendData: (clientId: string, mode: number, data: string | Buffer, tag?: string, timeout?: number) => void;
11
- sendDataDownload: (clientId: string, filename: string, file: Buffer) => void;
12
- sendDataBroadcast: (data: string, clientId?: string) => void;
13
- receiveData: (tag: string, callback: Model.IcallbackReceiveMessage) => void;
14
- receiveDataUpload: (callback: Model.IcallbackReceiveUpload) => void;
15
- receiveDataOff: (tag: string) => void;
16
- private create;
5
+ private clientMap;
6
+ private handleResponseMap;
17
7
  private responseHeader;
18
8
  private generateClientId;
19
- private checkClient;
20
- private handleFrame;
9
+ private generateSignature;
21
10
  private ping;
22
- private handleReceiveData;
23
- private cleanup;
24
11
  private clientConnection;
12
+ private checkClient;
13
+ private verifySignature;
14
+ private handleFrame;
25
15
  private clientReconnection;
16
+ private handleResponse;
17
+ private cleanup;
26
18
  private clientDisconnection;
27
- private generateSignature;
28
- private verifySignature;
19
+ private create;
20
+ constructor(server: Model.IhttpServer.Server | Model.IhttpsServer.Server, secretKeyValue: string, timePingValue?: number);
21
+ getClientMap: () => Map<string, Model.Iclient>;
22
+ sendData: (clientId: string, mode: string, message: Model.TsendMessage, tag?: string, timeout?: number) => void;
23
+ receiveData: <T>(tag: string, callback: (clientId: string, message: T) => void) => void;
24
+ sendDataDownload: (clientId: string, filename: string, file: Buffer) => void;
25
+ receiveDataUpload: (callback: Model.IcallbackReceiveUpload) => void;
26
+ receiveDataOff: (tag: string) => void;
27
+ sendDataBroadcast: (message: Model.TsendMessage, excludeClientId?: string) => void;
29
28
  }