@cimo/websocket 1.1.26 → 1.1.27
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/README.md +6 -0
- package/dist/client/Service.js +6 -3
- package/dist/client/Service.js.map +1 -1
- package/dist/server/Service.d.ts +2 -1
- package/dist/server/Service.js +18 -10
- package/dist/server/Service.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Websocket (server/client). Light, fast and secure.
|
|
4
4
|
|
|
5
|
+
## Pack
|
|
6
|
+
|
|
7
|
+
1. npm run pack
|
|
8
|
+
2. Copy the file "cimo-websocket-x.x.x.tgz" in the project root folder.
|
|
9
|
+
3. In the "package.json" file insert: "@cimo/websocket": "file:cimo-websocket-x.x.x.tgz"
|
|
10
|
+
|
|
5
11
|
## Publish
|
|
6
12
|
|
|
7
13
|
1. npm run build
|
package/dist/client/Service.js
CHANGED
|
@@ -19,7 +19,7 @@ class CwsClient {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
|
-
console.log("@cimo/webSocket - Client
|
|
22
|
+
console.log("@cimo/webSocket - Client => Service.ts => sendData()", "Client not connected.");
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
this.sendDataBroadcast = (data) => {
|
|
@@ -77,7 +77,7 @@ class CwsClient {
|
|
|
77
77
|
this.ws = new WebSocket(this.address);
|
|
78
78
|
this.ws.binaryType = "arraybuffer";
|
|
79
79
|
this.ws.onopen = () => {
|
|
80
|
-
console.log("@cimo/webSocket - Client
|
|
80
|
+
console.log("@cimo/webSocket - Client => Service.ts => onOpen()", "Connection open.");
|
|
81
81
|
};
|
|
82
82
|
let messageTagDownload = "";
|
|
83
83
|
this.ws.onmessage = (event) => {
|
|
@@ -87,6 +87,9 @@ class CwsClient {
|
|
|
87
87
|
if (json.tag === "cws_client_connection") {
|
|
88
88
|
this.clientId = json.message;
|
|
89
89
|
}
|
|
90
|
+
else if (json.tag === "cws_ping") {
|
|
91
|
+
this.sendData(1, "", "pong");
|
|
92
|
+
}
|
|
90
93
|
else if (json.tag === "cws_download") {
|
|
91
94
|
messageTagDownload = json.tag;
|
|
92
95
|
}
|
|
@@ -100,7 +103,7 @@ class CwsClient {
|
|
|
100
103
|
}
|
|
101
104
|
};
|
|
102
105
|
this.ws.onclose = () => {
|
|
103
|
-
console.log("@cimo/webSocket - Client
|
|
106
|
+
console.log("@cimo/webSocket - Client => Service.ts => onClose()", "Connection close.");
|
|
104
107
|
this.cleanup();
|
|
105
108
|
if (this.countCheckConnection < this.countCheckConnectionLimit) {
|
|
106
109
|
this.countCheckConnection++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/client/Service.ts"],"names":[],"mappings":";;AAGA,MAAqB,SAAS;IAc1B,YAAY,OAAe,EAAE,yBAAyB,GAAG,EAAE;QAJ3D,gBAAW,GAAG,GAAG,EAAE;YACf,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC,CAAC;QAeF,aAAQ,GAAG,CAAC,IAAY,EAAE,IAA0B,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE;YAC9D,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;gBAClD,IAAI,IAAI,KAAK,CAAC,EAAE;oBACZ,MAAM,IAAI,GAAG;wBACT,GAAG,EAAE,OAAO,GAAG,EAAE;wBACjB,OAAO,EAAE,IAAI;qBACM,CAAC;oBAExB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtC;qBAAM,IAAI,IAAI,KAAK,CAAC,EAAE;oBACnB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACtB;aACJ;iBAAM;gBAEH,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/client/Service.ts"],"names":[],"mappings":"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"}
|
package/dist/server/Service.d.ts
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
import * as Interface from "./Interface";
|
|
4
4
|
export default class CwsServer {
|
|
5
5
|
private clientList;
|
|
6
|
+
private modePing;
|
|
6
7
|
private timePing;
|
|
7
8
|
private handleReceiveDataList;
|
|
8
9
|
getClientList: () => Map<string, Interface.Iclient>;
|
|
9
|
-
constructor(server: Interface.IhttpsServer, timePing?: number);
|
|
10
|
+
constructor(server: Interface.IhttpsServer, modePing?: number, timePing?: number);
|
|
10
11
|
sendData: (clientId: string, mode: number, data: string | Buffer, tag?: string) => void;
|
|
11
12
|
sendDataBroadcast: (data: string, clientId?: string) => void;
|
|
12
13
|
sendDataDownload: (clientId: string, filename: string, file: Buffer) => void;
|
package/dist/server/Service.js
CHANGED
|
@@ -26,13 +26,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
const Crypto = __importStar(require("crypto"));
|
|
27
27
|
class CwsServer {
|
|
28
28
|
clientList;
|
|
29
|
+
modePing;
|
|
29
30
|
timePing;
|
|
30
31
|
handleReceiveDataList;
|
|
31
32
|
getClientList = () => {
|
|
32
33
|
return this.clientList;
|
|
33
34
|
};
|
|
34
|
-
constructor(server, timePing = 25000) {
|
|
35
|
+
constructor(server, modePing = 1, timePing = 25000) {
|
|
35
36
|
this.clientList = new Map();
|
|
37
|
+
this.modePing = modePing;
|
|
36
38
|
this.timePing = timePing;
|
|
37
39
|
this.handleReceiveDataList = new Map();
|
|
38
40
|
this.create(server);
|
|
@@ -130,7 +132,7 @@ class CwsServer {
|
|
|
130
132
|
intervalPing: undefined
|
|
131
133
|
});
|
|
132
134
|
this.ping(clientId);
|
|
133
|
-
console.log("@cimo/webSocket - Server
|
|
135
|
+
console.log("@cimo/webSocket - Server => Service.ts => create() => onUpgrade()", `Client ${clientId} - Ip: ${socket.remoteAddress || ""} connected`);
|
|
134
136
|
this.sendData(clientId, 1, clientId, "client_connection");
|
|
135
137
|
this.sendDataBroadcast(`Client ${clientId} connected`, clientId);
|
|
136
138
|
let messageTagUpload = "";
|
|
@@ -141,6 +143,8 @@ class CwsServer {
|
|
|
141
143
|
if (json.tag === "cws_broadcast") {
|
|
142
144
|
this.sendDataBroadcast(json.message, clientId);
|
|
143
145
|
}
|
|
146
|
+
else if (json.tag === "cws_pong") {
|
|
147
|
+
}
|
|
144
148
|
else if (json.tag === "cws_upload") {
|
|
145
149
|
messageTagUpload = json.tag;
|
|
146
150
|
}
|
|
@@ -153,7 +157,7 @@ class CwsServer {
|
|
|
153
157
|
});
|
|
154
158
|
});
|
|
155
159
|
socket.on("end", () => {
|
|
156
|
-
console.log("@cimo/webSocket - Server
|
|
160
|
+
console.log("@cimo/webSocket - Server => Service.ts => create() => onEnd()", `Client ${clientId} - Ip: ${socket.remoteAddress || ""} disconnected`);
|
|
157
161
|
this.sendDataBroadcast(`Client ${clientId} disconnected`, clientId);
|
|
158
162
|
this.cleanup(clientId);
|
|
159
163
|
});
|
|
@@ -171,7 +175,7 @@ class CwsServer {
|
|
|
171
175
|
checkClient = (clientId) => {
|
|
172
176
|
const client = this.clientList.get(clientId);
|
|
173
177
|
if (!client) {
|
|
174
|
-
console.log("@cimo/webSocket - Server
|
|
178
|
+
console.log("@cimo/webSocket - Server => Service.ts => checkClient()", `Client ${clientId} not exists!`);
|
|
175
179
|
return undefined;
|
|
176
180
|
}
|
|
177
181
|
return client;
|
|
@@ -216,7 +220,6 @@ class CwsServer {
|
|
|
216
220
|
client.fragmentList.push(payload);
|
|
217
221
|
}
|
|
218
222
|
else if (client.opCode === 0x0a) {
|
|
219
|
-
console.log("@cimo/webSocket - Server - Service.ts - handleFrame()", `Client ${clientId} pong.`);
|
|
220
223
|
}
|
|
221
224
|
if (fin) {
|
|
222
225
|
const clientOpCode = client.opCode;
|
|
@@ -234,11 +237,16 @@ class CwsServer {
|
|
|
234
237
|
return;
|
|
235
238
|
}
|
|
236
239
|
client.intervalPing = setInterval(() => {
|
|
237
|
-
if (
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
240
|
+
if (this.modePing === 1) {
|
|
241
|
+
if (client.socket && client.socket.writable) {
|
|
242
|
+
const frame = Buffer.alloc(2);
|
|
243
|
+
frame[0] = 0x89;
|
|
244
|
+
frame[1] = 0x00;
|
|
245
|
+
client.socket.write(frame);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else if (this.modePing === 2) {
|
|
249
|
+
this.sendData(clientId, 1, "", "ping");
|
|
242
250
|
}
|
|
243
251
|
}, this.timePing);
|
|
244
252
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/server/Service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAiC;AAKjC,MAAqB,SAAS;IAClB,UAAU,CAAiC;IAC3C,QAAQ,CAAS;IACjB,qBAAqB,CAAiD;IAE9E,aAAa,GAAG,GAAG,EAAE;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC,CAAC;IAEF,YAAY,MAA8B,EAAE,QAAQ,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/server/Service.ts"],"names":[],"mappings":"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"}
|