@cimo/websocket 1.4.45 → 1.5.45

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.
@@ -2,21 +2,20 @@ import * as model from "./Model";
2
2
  export default class Manager {
3
3
  private ws;
4
4
  private address;
5
- private clientId;
6
- private callbackHandleResponseMap;
7
- private countCheckConnection;
8
- private countCheckConnectionLimit;
9
- private intervalCheckConnection;
10
- private handleResponse;
5
+ private handleReceiveDataList;
6
+ private callbackConnection;
7
+ private callbackDisconnection;
8
+ private handleReceiveData;
9
+ private handleReceiveDataRemove;
11
10
  private cleanup;
12
11
  private create;
13
- constructor(addressValue: string, countCheckConnectionLimitValue?: number);
14
- getClientId: () => string;
15
- sendData: (mode: string, message: model.TsendMessage, tag?: string, timeout?: number) => void;
16
- receiveData: <T>(tag: string, callback: (message: T) => void) => void;
12
+ constructor(addressValue: string);
13
+ checkStatus: (mode: string, callback: () => void) => void;
14
+ sendMessage: (mode: string, data: model.TsendData, tag?: string, timeout?: number) => void;
15
+ sendDataBroadcast: (data: model.TsendData) => void;
17
16
  sendDataUpload: (filename: string, file: ArrayBuffer) => void;
17
+ sendDataDirect: (data: model.TsendData, clientId: string) => void;
18
+ receiveData: <T>(tag: string, callbackValue: model.IcallbackReceiveData<T>) => void;
18
19
  receiveDataDownload: (callback: model.IcallbackReceiveDataDownload) => void;
19
- receiveDataOff: (tag: string) => void;
20
- sendDataBroadcast: (message: model.TsendMessage) => void;
21
- checkConnection: (callback: () => void) => void;
20
+ receiveDataDirect: (callback: (data: model.TreceiveData) => void) => void;
22
21
  }
@@ -37,27 +37,39 @@ const helperSrc = __importStar(require("../HelperSrc"));
37
37
  class Manager {
38
38
  ws;
39
39
  address;
40
- clientId;
41
- callbackHandleResponseMap;
42
- countCheckConnection;
43
- countCheckConnectionLimit;
44
- intervalCheckConnection;
45
- handleResponse = (tag, message) => {
46
- for (const [index, callback] of this.callbackHandleResponseMap) {
47
- if (tag === index) {
48
- callback(message);
40
+ handleReceiveDataList;
41
+ callbackConnection = null;
42
+ callbackDisconnection = null;
43
+ handleReceiveData = (tag, data) => {
44
+ for (const handleReceiveData of this.handleReceiveDataList) {
45
+ if (handleReceiveData.tag === tag) {
46
+ handleReceiveData.callback(data);
49
47
  return;
50
48
  }
51
49
  }
52
50
  };
51
+ handleReceiveDataRemove = (tag) => {
52
+ for (let a = this.handleReceiveDataList.length - 1; a >= 0; a--) {
53
+ if (this.handleReceiveDataList[a].tag === tag) {
54
+ this.handleReceiveDataList.splice(a, 1);
55
+ break;
56
+ }
57
+ }
58
+ };
53
59
  cleanup = () => {
54
- this.ws = undefined;
60
+ if (this.ws) {
61
+ this.ws.close();
62
+ this.ws = undefined;
63
+ }
55
64
  };
56
65
  create = () => {
57
66
  this.ws = new WebSocket(this.address);
58
67
  this.ws.binaryType = "arraybuffer";
59
68
  this.ws.onopen = () => {
60
- helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - create() - onOpen()", "Connection open.");
69
+ helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - create() - onopen()", "Connection open.");
70
+ if (this.callbackConnection) {
71
+ this.callbackConnection();
72
+ }
61
73
  };
62
74
  let messageTagDownload = "";
63
75
  this.ws.onmessage = (event) => {
@@ -77,49 +89,53 @@ class Manager {
77
89
  if (messageObject.tag === "cws_download") {
78
90
  messageTagDownload = messageObject.tag;
79
91
  }
80
- this.handleResponse(messageObject.tag, messageObject.data);
92
+ this.handleReceiveData(messageObject.tag, messageObject.data);
81
93
  }
82
94
  else if (typeof event.data !== "string" && messageTagDownload) {
83
95
  const view = new DataView(event.data);
84
- this.handleResponse(messageTagDownload, view);
96
+ this.handleReceiveData(messageTagDownload, view);
85
97
  messageTagDownload = "";
86
98
  }
87
99
  }
88
100
  };
89
101
  this.ws.onclose = () => {
90
- helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - create() - onClose()", "Connection close.");
102
+ helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - create() - onclose()", "Connection close.");
91
103
  this.cleanup();
104
+ if (this.callbackDisconnection) {
105
+ this.callbackDisconnection();
106
+ }
92
107
  };
93
108
  };
94
- constructor(addressValue, countCheckConnectionLimitValue = 25) {
109
+ constructor(addressValue) {
95
110
  this.ws = undefined;
96
111
  this.address = addressValue;
97
- this.clientId = "";
98
- this.callbackHandleResponseMap = new Map();
99
- this.countCheckConnection = 0;
100
- this.countCheckConnectionLimit = countCheckConnectionLimitValue;
101
- this.intervalCheckConnection = undefined;
112
+ this.handleReceiveDataList = [];
102
113
  this.create();
103
114
  }
104
- getClientId = () => {
105
- return this.clientId;
115
+ checkStatus = (mode, callback) => {
116
+ if (mode === "connection") {
117
+ this.callbackConnection = callback;
118
+ }
119
+ else if (mode === "disconnection") {
120
+ this.callbackDisconnection = callback;
121
+ }
106
122
  };
107
- sendData = (mode, message, tag = "", timeout = 0) => {
123
+ sendMessage = (mode, data, tag = "", timeout = 0) => {
108
124
  if (this.ws && this.ws.readyState === WebSocket.OPEN) {
109
- if (!(message instanceof ArrayBuffer) && !(typeof message === "string") && !(typeof message === "object" && message !== null)) {
110
- helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - sendData()", "Invalid message type!");
125
+ if (!(data instanceof ArrayBuffer) && !(typeof data === "string") && !(typeof data === "object" && data !== null)) {
126
+ helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - sendMessage()", "Invalid data type!");
111
127
  }
112
- if (mode === "text" && !(message instanceof ArrayBuffer)) {
113
- let resultMessage = "";
114
- if (typeof message === "string") {
115
- resultMessage = message;
128
+ if (mode === "text" && !(data instanceof ArrayBuffer)) {
129
+ let resultData = "";
130
+ if (typeof data === "string") {
131
+ resultData = data;
116
132
  }
117
- else if (typeof message === "object") {
118
- resultMessage = JSON.stringify(message);
133
+ else if (typeof data === "object") {
134
+ resultData = JSON.stringify(data);
119
135
  }
120
136
  const messageObject = {
121
137
  tag: `cws_${tag}`,
122
- data: window.btoa(String.fromCharCode(...new TextEncoder().encode(resultMessage)))
138
+ data: window.btoa(String.fromCharCode(...new TextEncoder().encode(resultData)))
123
139
  };
124
140
  if (timeout > 0) {
125
141
  const timeoutEvent = setTimeout(() => {
@@ -133,77 +149,63 @@ class Manager {
133
149
  this.ws.send(JSON.stringify(messageObject));
134
150
  }
135
151
  }
136
- else if (mode === "binary" && message instanceof ArrayBuffer) {
137
- this.ws.send(message);
152
+ else if (mode === "binary" && data instanceof ArrayBuffer) {
153
+ this.ws.send(data);
138
154
  }
139
155
  else {
140
- helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - sendData()", "Message type doesn't match mode!");
156
+ helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - sendMessage()", "Message type doesn't match mode!");
141
157
  }
142
158
  }
143
159
  else {
144
- helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - sendData()", "Client not connected!");
160
+ helperSrc.writeLog("@cimo/websocket - Client - Manager.ts - sendMessage()", "Client not connected!");
161
+ }
162
+ };
163
+ sendDataBroadcast = (data) => {
164
+ this.sendMessage("text", data, "broadcast");
165
+ };
166
+ sendDataUpload = (filename, file) => {
167
+ this.sendMessage("text", filename, "upload");
168
+ this.sendMessage("binary", file, "", 100);
169
+ };
170
+ sendDataDirect = (data, clientId) => {
171
+ if (clientId !== "") {
172
+ this.sendMessage("text", { content: data, toClientId: clientId }, "direct");
145
173
  }
146
174
  };
147
- receiveData = (tag, callback) => {
148
- this.callbackHandleResponseMap.set(`cws_${tag}`, (message) => {
149
- let resultMessage;
150
- if (typeof message === "string") {
151
- const decoded = helperSrc.base64ToUtf8(message);
152
- if (!helperSrc.isJson(decoded)) {
153
- resultMessage = decoded;
175
+ receiveData = (tag, callbackValue) => {
176
+ const cwsTag = `cws_${tag}`;
177
+ this.handleReceiveDataRemove(cwsTag);
178
+ this.handleReceiveDataList.push({
179
+ tag: cwsTag,
180
+ callback: (data) => {
181
+ let resultData;
182
+ if (typeof data === "string") {
183
+ const decoded = helperSrc.base64ToUtf8(data);
184
+ resultData = !helperSrc.isJson(decoded) ? decoded : JSON.parse(decoded);
154
185
  }
155
186
  else {
156
- resultMessage = JSON.parse(decoded);
187
+ resultData = data;
157
188
  }
189
+ callbackValue(resultData);
158
190
  }
159
- else {
160
- resultMessage = message;
161
- }
162
- callback(resultMessage);
163
191
  });
164
192
  };
165
- sendDataUpload = (filename, file) => {
166
- this.sendData("text", filename, "upload");
167
- this.sendData("binary", file, "", 100);
168
- };
169
193
  receiveDataDownload = (callback) => {
170
194
  let filename = "";
171
- this.receiveData("download", (message) => {
172
- if (typeof message === "string") {
173
- filename = message;
195
+ this.receiveData("download", (data) => {
196
+ if (typeof data === "string") {
197
+ filename = data;
174
198
  }
175
199
  else {
176
- callback(message, filename);
200
+ callback(data, filename);
177
201
  filename = "";
178
202
  }
179
203
  });
180
204
  };
181
- receiveDataOff = (tag) => {
182
- if (this.callbackHandleResponseMap.has(`cws_${tag}`)) {
183
- this.callbackHandleResponseMap.delete(`cws_${tag}`);
184
- }
185
- };
186
- sendDataBroadcast = (message) => {
187
- this.sendData("text", message, "broadcast");
188
- };
189
- checkConnection = (callback) => {
190
- if (this.countCheckConnection > this.countCheckConnectionLimit) {
191
- clearInterval(this.intervalCheckConnection);
192
- return;
193
- }
194
- if (this.ws) {
195
- if (this.ws.readyState === WebSocket.OPEN) {
196
- clearInterval(this.intervalCheckConnection);
197
- this.countCheckConnection = 0;
198
- callback();
199
- }
200
- else if (this.countCheckConnection === 0) {
201
- this.intervalCheckConnection = setInterval(() => {
202
- this.countCheckConnection++;
203
- this.checkConnection(callback);
204
- }, 5000);
205
- }
206
- }
205
+ receiveDataDirect = (callback) => {
206
+ this.receiveData("direct", (data) => {
207
+ callback(data);
208
+ });
207
209
  };
208
210
  }
209
211
  exports.default = Manager;
@@ -1 +1 @@
1
- {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../../src/client/Manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../../src/client/Manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wDAA0C;AAG1C,MAAqB,OAAO;IAChB,EAAE,CAAwB;IAC1B,OAAO,CAAS;IAChB,qBAAqB,CAA6B;IAClD,kBAAkB,GAAwB,IAAI,CAAC;IAC/C,qBAAqB,GAAwB,IAAI,CAAC;IAElD,iBAAiB,GAAG,CAAC,GAAW,EAAE,IAAwB,EAAQ,EAAE;QACxE,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzD,IAAI,iBAAiB,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAChC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEjC,OAAO;YACX,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEM,uBAAuB,GAAG,CAAC,GAAW,EAAQ,EAAE;QACpD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9D,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC5C,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAExC,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACxB,CAAC;IACL,CAAC,CAAC;IAEM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC;QAEnC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;YAClB,SAAS,CAAC,QAAQ,CAAC,6DAA6D,EAAE,kBAAkB,CAAC,CAAC;YAEtG,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAE5B,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,KAAgC,EAAE,EAAE;YACrD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACV,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAc,CAAC;oBAEvC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;wBACpB,OAAO;oBACX,CAAC;oBAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC/B,OAAO;oBACX,CAAC;oBAED,MAAM,aAAa,GAAmB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAE5D,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC1D,OAAO;oBACX,CAAC;oBAED,IAAI,aAAa,CAAC,GAAG,KAAK,cAAc,EAAE,CAAC;wBACvC,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAAC;oBAC3C,CAAC;oBAED,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAClE,CAAC;qBAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,kBAAkB,EAAE,CAAC;oBAC9D,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEtC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;oBAEjD,kBAAkB,GAAG,EAAE,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;YACnB,SAAS,CAAC,QAAQ,CAAC,8DAA8D,EAAE,mBAAmB,CAAC,CAAC;YAExG,IAAI,CAAC,OAAO,EAAE,CAAC;YAEf,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,YAAY,YAAoB;QAC5B,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;QAC5B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,WAAW,GAAG,CAAC,IAAY,EAAE,QAAoB,EAAQ,EAAE;QACvD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;QAC1C,CAAC;IACL,CAAC,CAAC;IAEF,WAAW,GAAG,CAAC,IAAY,EAAE,IAAqB,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,EAAQ,EAAE;QAC/E,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAChH,SAAS,CAAC,QAAQ,CAAC,uDAAuD,EAAE,oBAAoB,CAAC,CAAC;YACtG,CAAC;YAED,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,EAAE,CAAC;gBACpD,IAAI,UAAU,GAAG,EAAE,CAAC;gBAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,UAAU,GAAG,IAAI,CAAC;gBACtB,CAAC;qBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAClC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;gBAED,MAAM,aAAa,GAAmB;oBAClC,GAAG,EAAE,OAAO,GAAG,EAAE;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;iBAClF,CAAC;gBAEF,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBACd,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;wBACjC,YAAY,CAAC,YAAY,CAAC,CAAC;wBAE3B,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;4BACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;wBAChD,CAAC;oBACL,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;gBAC1D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,QAAQ,CAAC,uDAAuD,EAAE,kCAAkC,CAAC,CAAC;YACpH,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,QAAQ,CAAC,uDAAuD,EAAE,uBAAuB,CAAC,CAAC;QACzG,CAAC;IACL,CAAC,CAAC;IAEF,iBAAiB,GAAG,CAAC,IAAqB,EAAQ,EAAE;QAChD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,cAAc,GAAG,CAAC,QAAgB,EAAE,IAAiB,EAAQ,EAAE;QAC3D,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,cAAc,GAAG,CAAC,IAAqB,EAAE,QAAgB,EAAQ,EAAE;QAC/D,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAChF,CAAC;IACL,CAAC,CAAC;IAEF,WAAW,GAAG,CAAI,GAAW,EAAE,aAA4C,EAAQ,EAAE;QACjF,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC;QAE5B,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC5B,GAAG,EAAE,MAAM;YACX,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,UAAa,CAAC;gBAElB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAE7C,UAAU,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAa,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAO,CAAC;gBAC1F,CAAC;qBAAM,CAAC;oBACJ,UAAU,GAAG,IAAS,CAAC;gBAC3B,CAAC;gBAED,aAAa,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,mBAAmB,GAAG,CAAC,QAA4C,EAAQ,EAAE;QACzE,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,IAAI,CAAC,WAAW,CAAqB,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YACtD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAEzB,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,iBAAiB,GAAG,CAAC,QAA4C,EAAE,EAAE;QACjE,IAAI,CAAC,WAAW,CAAqB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;YACpD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;CACL;AA/MD,0BA+MC"}
@@ -1,15 +1,19 @@
1
1
  export interface Iclient {
2
2
  socket: WebSocket;
3
3
  }
4
- export interface IcallbackHandleResponse {
5
- (message: ThandleMessage): void;
4
+ export interface IhandleReceiveData {
5
+ tag: string;
6
+ callback: IcallbackReceiveData<TreceiveData>;
7
+ }
8
+ export interface IcallbackReceiveData<T> {
9
+ (data: T): void;
6
10
  }
7
11
  export interface IcallbackReceiveDataDownload {
8
- (message: DataView, filename: string): void;
12
+ (data: DataView, filename: string): void;
9
13
  }
10
14
  export interface Imessage {
11
15
  tag: string;
12
16
  data: string;
13
17
  }
14
- export type TsendMessage = string | Record<string, unknown> | ArrayBuffer;
15
- export type ThandleMessage = string | DataView;
18
+ export type TreceiveData = string | DataView;
19
+ export type TsendData = string | Record<string, unknown> | ArrayBuffer;
@@ -2,26 +2,28 @@ import * as model from "./Model";
2
2
  export default class Manager {
3
3
  private secretKey;
4
4
  private timePing;
5
- private clientMap;
6
- private callbackHandleResponseMap;
7
- private responseHeader;
5
+ private clientList;
6
+ private handleReceiveDataList;
8
7
  private generateClientId;
9
8
  private generateSignature;
10
- private ping;
11
- private clientConnection;
12
- private checkClient;
13
9
  private verifySignature;
10
+ private clientRemove;
11
+ private clientCheck;
12
+ private clientConnection;
13
+ private clientDisconnection;
14
+ private ping;
15
+ private responseHeader;
14
16
  private handleFrame;
15
- private handleResponse;
17
+ private handleReceiveData;
18
+ private handleReceiveDataRemove;
16
19
  private cleanup;
17
- private clientDisconnection;
20
+ private sendDataDirect;
18
21
  private create;
19
22
  constructor(server: model.IhttpServer.Server | model.IhttpsServer.Server, secretKeyValue: string, timePingValue?: number);
20
- getClientMap: () => Map<string, model.Iclient>;
21
- sendData: (clientId: string, mode: string, message: model.TsendMessage, tag?: string, timeout?: number) => void;
22
- receiveData: <T>(tag: string, callback: (clientId: string, message: T) => void) => void;
23
- sendDataDownload: (clientId: string, filename: string, file: Buffer) => void;
23
+ clientIdList: () => string[];
24
+ sendMessage: (mode: string, data: model.TsendData, tag: string | undefined, clientId: string, timeout?: number) => void;
25
+ sendDataBroadcast: (data: model.TsendData, excludeClientId?: string) => void;
26
+ sendDataDownload: (filename: string, file: Buffer, clientId: string) => void;
27
+ receiveData: <T>(tag: string, callbackValue: model.IcallbackReceiveData<T>) => void;
24
28
  receiveDataUpload: (callback: model.IcallbackReceiveDataUpload) => void;
25
- receiveDataOff: (tag: string) => void;
26
- sendDataBroadcast: (message: model.TsendMessage, excludeClientId?: string) => void;
27
29
  }
@@ -38,25 +38,64 @@ const helperSrc = __importStar(require("../HelperSrc"));
38
38
  class Manager {
39
39
  secretKey;
40
40
  timePing;
41
- clientMap;
42
- callbackHandleResponseMap;
43
- responseHeader = (request) => {
44
- const key = request.headers["sec-websocket-key"];
45
- if (!key || Array.isArray(key)) {
46
- helperSrc.writeLog("@cimo/webSocket - Server - Manager.ts - responseHeader()", "Invalid Sec-WebSocket-Key header!");
47
- }
48
- const hash = Crypto.createHash("sha1").update(`${key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`).digest("base64");
49
- return ["HTTP/1.1 101 Switching Protocols", "Upgrade: websocket", "Connection: Upgrade", `Sec-WebSocket-Accept: ${hash}`, "\r\n"];
50
- };
51
- generateClientId() {
41
+ clientList;
42
+ handleReceiveDataList;
43
+ generateClientId = () => {
52
44
  return Crypto.randomBytes(20).toString("hex");
53
- }
45
+ };
54
46
  generateSignature = (value) => {
55
47
  return Crypto.createHmac("sha256", this.secretKey).update(value).digest("hex");
56
48
  };
49
+ verifySignature = (clientId, signature) => {
50
+ if (signature !== this.generateSignature(clientId)) {
51
+ return false;
52
+ }
53
+ return true;
54
+ };
55
+ clientRemove = (clientId) => {
56
+ for (let a = this.clientList.length - 1; a >= 0; a--) {
57
+ if (this.clientList[a].id === clientId) {
58
+ this.clientList.splice(a, 1);
59
+ }
60
+ }
61
+ };
62
+ clientCheck = (clientId) => {
63
+ for (let a = 0; a < this.clientList.length; a++) {
64
+ if (this.clientList[a].id === clientId) {
65
+ return this.clientList[a];
66
+ }
67
+ }
68
+ return null;
69
+ };
70
+ clientConnection = (socket) => {
71
+ const clientId = this.generateClientId();
72
+ const signature = this.generateSignature(clientId);
73
+ helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - clientConnection()", `Connection request from Ip: ${socket.remoteAddress || ""} - Client ${clientId}.`);
74
+ this.clientRemove(clientId);
75
+ this.clientList.push({
76
+ id: clientId,
77
+ signature,
78
+ username: "",
79
+ socket,
80
+ buffer: Buffer.alloc(0),
81
+ opCode: -1,
82
+ fragmentList: [],
83
+ intervalPing: undefined,
84
+ lastPong: Date.now()
85
+ });
86
+ this.sendDataBroadcast({ label: "connection", result: `Client ${clientId} connected.` }, clientId);
87
+ this.ping(clientId);
88
+ return clientId;
89
+ };
90
+ clientDisconnection = (socket, clientId) => {
91
+ helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - clientDisconnection()", `Disconnection request from Ip: ${socket.remoteAddress || ""} - Client ${clientId}.`);
92
+ this.sendDataBroadcast({ label: "disconnection", result: `Client ${clientId} disconnected.` }, clientId);
93
+ this.cleanup(clientId);
94
+ };
57
95
  ping = (clientId) => {
58
- const client = this.checkClient(clientId);
96
+ const client = this.clientCheck(clientId);
59
97
  if (!client) {
98
+ helperSrc.writeLog("@cimo/webSocket - Server - Manager.ts - ping()", `Client ${clientId} doesn't exists!`);
60
99
  return;
61
100
  }
62
101
  client.intervalPing = setInterval(() => {
@@ -74,44 +113,23 @@ class Manager {
74
113
  }
75
114
  }, this.timePing);
76
115
  };
77
- clientConnection(socket) {
78
- const clientId = this.generateClientId();
79
- const signature = this.generateSignature(clientId);
80
- helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - clientConnection()", `Connection request from Ip: ${socket.remoteAddress || ""} - Client ${clientId}.`);
81
- this.clientMap.set(clientId, {
82
- socket,
83
- buffer: Buffer.alloc(0),
84
- signature,
85
- opCode: -1,
86
- fragmentList: [],
87
- intervalPing: undefined,
88
- lastPong: Date.now()
89
- });
90
- this.sendDataBroadcast({ tag: "connection", result: `Client ${clientId} connected.` }, clientId);
91
- this.ping(clientId);
92
- return clientId;
93
- }
94
- checkClient = (clientId) => {
95
- const client = this.clientMap.get(clientId);
96
- if (!client) {
97
- helperSrc.writeLog("@cimo/webSocket - Server - Manager.ts - checkClient()", `Client ${clientId} doesn't exists!`);
98
- return null;
99
- }
100
- return client;
101
- };
102
- verifySignature = (value, signature) => {
103
- if (signature !== this.generateSignature(value)) {
104
- helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - verifySignature()", "Wrong signature!");
116
+ responseHeader = (request) => {
117
+ const key = request.headers["sec-websocket-key"];
118
+ if (!key || Array.isArray(key)) {
119
+ helperSrc.writeLog("@cimo/webSocket - Server - Manager.ts - responseHeader()", "Invalid Sec-WebSocket-Key header!");
105
120
  }
106
- return true;
121
+ const hash = Crypto.createHash("sha1").update(`${key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`).digest("base64");
122
+ return ["HTTP/1.1 101 Switching Protocols", "Upgrade: websocket", "Connection: Upgrade", `Sec-WebSocket-Accept: ${hash}`, "\r\n"];
107
123
  };
108
124
  handleFrame = (clientId, data, callback) => {
109
- const client = this.checkClient(clientId);
125
+ const client = this.clientCheck(clientId);
110
126
  if (!client) {
127
+ helperSrc.writeLog("@cimo/webSocket - Server - Manager.ts - handleFrame()", `Client ${clientId} doesn't exists!`);
111
128
  return;
112
129
  }
113
130
  const isSignatureVerified = this.verifySignature(clientId, client.signature);
114
131
  if (!isSignatureVerified) {
132
+ helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - handleFrame()", "Wrong signature!");
115
133
  return;
116
134
  }
117
135
  client.buffer = Buffer.concat([client.buffer, data]);
@@ -167,29 +185,37 @@ class Manager {
167
185
  }
168
186
  }
169
187
  };
170
- handleResponse = (clientId, tag, message) => {
171
- for (const [index, callback] of this.callbackHandleResponseMap) {
172
- if (tag === index) {
173
- callback(clientId, message);
188
+ handleReceiveData = (tag, data, clientId) => {
189
+ for (const handleReceiveData of this.handleReceiveDataList) {
190
+ if (handleReceiveData.tag === tag) {
191
+ handleReceiveData.callback(data, clientId);
174
192
  return;
175
193
  }
176
194
  }
177
195
  };
196
+ handleReceiveDataRemove = (tag) => {
197
+ for (let a = this.handleReceiveDataList.length - 1; a >= 0; a--) {
198
+ if (this.handleReceiveDataList[a].tag === tag) {
199
+ this.handleReceiveDataList.splice(a, 1);
200
+ }
201
+ }
202
+ };
178
203
  cleanup = (clientId) => {
179
- const client = this.clientMap.get(clientId);
204
+ const client = this.clientCheck(clientId);
180
205
  if (!client) {
206
+ helperSrc.writeLog("@cimo/webSocket - Server - Manager.ts - cleanup()", `Client ${clientId} doesn't exists!`);
181
207
  return;
182
208
  }
183
209
  if (client.intervalPing) {
184
210
  clearInterval(client.intervalPing);
185
211
  }
186
212
  client.socket.end();
187
- this.clientMap.delete(clientId);
213
+ this.clientRemove(clientId);
188
214
  };
189
- clientDisconnection = (socket, clientId) => {
190
- helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - clientDisconnection()", `Disconnection request from Ip: ${socket.remoteAddress || ""} - Client ${clientId}.`);
191
- this.sendDataBroadcast({ tag: "disconnection", result: `Client ${clientId} disconnected.` }, clientId);
192
- this.cleanup(clientId);
215
+ sendDataDirect = () => {
216
+ this.receiveData("direct", (data) => {
217
+ this.sendMessage("text", data.content, "direct", data.toClientId);
218
+ });
193
219
  };
194
220
  create = (server) => {
195
221
  server.on("upgrade", (request, socket) => {
@@ -220,10 +246,13 @@ class Manager {
220
246
  else if (messageObject.tag === "cws_broadcast") {
221
247
  this.sendDataBroadcast(messageObject.data, clientId);
222
248
  }
223
- this.handleResponse(clientId, messageObject.tag, messageObject.data);
249
+ else if (messageObject.tag === "cws_direct") {
250
+ this.sendDataDirect();
251
+ }
252
+ this.handleReceiveData(messageObject.tag, messageObject.data, clientId);
224
253
  }
225
254
  else if ((clientOpCode === 0 || clientOpCode === 2) && messageTagUpload) {
226
- this.handleResponse(clientId, messageTagUpload, clientFragmentList);
255
+ this.handleReceiveData(messageTagUpload, clientFragmentList, clientId);
227
256
  messageTagUpload = "";
228
257
  }
229
258
  });
@@ -236,45 +265,50 @@ class Manager {
236
265
  constructor(server, secretKeyValue, timePingValue = 25000) {
237
266
  this.secretKey = secretKeyValue;
238
267
  this.timePing = timePingValue;
239
- this.clientMap = new Map();
240
- this.callbackHandleResponseMap = new Map();
268
+ this.clientList = [];
269
+ this.handleReceiveDataList = [];
241
270
  this.create(server);
242
271
  }
243
- getClientMap = () => {
244
- return this.clientMap;
272
+ clientIdList = () => {
273
+ const resultList = [];
274
+ for (const client of this.clientList) {
275
+ resultList.push(client.id);
276
+ }
277
+ return resultList;
245
278
  };
246
- sendData = (clientId, mode, message, tag = "", timeout = 0) => {
247
- const client = this.checkClient(clientId);
279
+ sendMessage = (mode, data, tag = "", clientId, timeout = 0) => {
280
+ const client = this.clientCheck(clientId);
248
281
  if (!client) {
282
+ helperSrc.writeLog("@cimo/webSocket - Server - Manager.ts - sendMessage()", `Client ${clientId} doesn't exists!`);
249
283
  return;
250
284
  }
251
285
  if (client && client.socket && client.socket.writable) {
252
286
  let buffer = Buffer.alloc(0);
253
287
  let frame0 = 0;
254
- if (!Buffer.isBuffer(message) && !(typeof message === "string") && !(typeof message === "object" && message !== null)) {
255
- helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - sendData()", "Invalid message type!");
288
+ if (!Buffer.isBuffer(data) && !(typeof data === "string") && !(typeof data === "object" && data !== null)) {
289
+ helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - sendMessage()", "Invalid data type!");
256
290
  }
257
- if (mode === "text" && !Buffer.isBuffer(message)) {
258
- let resultMessage = "";
259
- if (typeof message === "string") {
260
- resultMessage = message;
291
+ if (mode === "text" && !Buffer.isBuffer(data)) {
292
+ let resultData = "";
293
+ if (typeof data === "string") {
294
+ resultData = data;
261
295
  }
262
- else if (typeof message === "object") {
263
- resultMessage = JSON.stringify(message);
296
+ else if (typeof data === "object") {
297
+ resultData = JSON.stringify(data);
264
298
  }
265
299
  const messageObject = {
266
300
  tag: `cws_${tag}`,
267
- data: Buffer.from(resultMessage).toString("base64")
301
+ data: Buffer.from(resultData).toString("base64")
268
302
  };
269
303
  buffer = Buffer.from(JSON.stringify(messageObject));
270
304
  frame0 = 0x81;
271
305
  }
272
- else if (mode === "binary" && Buffer.isBuffer(message)) {
273
- buffer = Buffer.from(message);
306
+ else if (mode === "binary" && Buffer.isBuffer(data)) {
307
+ buffer = Buffer.from(data);
274
308
  frame0 = 0x82;
275
309
  }
276
310
  else {
277
- helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - sendData()", "Message type doesn't match mode!");
311
+ helperSrc.writeLog("@cimo/websocket - Server - Manager.ts - sendMessage()", "Message type doesn't match mode!");
278
312
  }
279
313
  const length = buffer.length;
280
314
  let frame;
@@ -307,52 +341,47 @@ class Manager {
307
341
  }
308
342
  }
309
343
  };
310
- receiveData = (tag, callback) => {
311
- this.callbackHandleResponseMap.set(`cws_${tag}`, (clientId, message) => {
312
- let resultMessage;
313
- if (typeof message === "string") {
314
- const decoded = Buffer.from(message, "base64").toString();
315
- if (!helperSrc.isJson(decoded)) {
316
- resultMessage = decoded;
344
+ sendDataBroadcast = (data, excludeClientId) => {
345
+ for (const client of this.clientList) {
346
+ if (client.id !== excludeClientId) {
347
+ this.sendMessage("text", data, "broadcast", client.id);
348
+ }
349
+ }
350
+ };
351
+ sendDataDownload = (filename, file, clientId) => {
352
+ this.sendMessage("text", filename, "download", clientId);
353
+ this.sendMessage("binary", file, "", clientId, 100);
354
+ };
355
+ receiveData = (tag, callbackValue) => {
356
+ const cwsTag = `cws_${tag}`;
357
+ this.handleReceiveDataRemove(cwsTag);
358
+ this.handleReceiveDataList.push({
359
+ tag: cwsTag,
360
+ callback: (data, clientId) => {
361
+ let resultData;
362
+ if (typeof data === "string") {
363
+ const decoded = Buffer.from(data, "base64").toString();
364
+ resultData = !helperSrc.isJson(decoded) ? decoded : JSON.parse(decoded);
317
365
  }
318
366
  else {
319
- resultMessage = JSON.parse(decoded);
367
+ resultData = data;
320
368
  }
369
+ callbackValue(resultData, clientId);
321
370
  }
322
- else {
323
- resultMessage = message;
324
- }
325
- callback(clientId, resultMessage);
326
371
  });
327
372
  };
328
- sendDataDownload = (clientId, filename, file) => {
329
- this.sendData(clientId, "text", filename, "download");
330
- this.sendData(clientId, "binary", file, "", 100);
331
- };
332
373
  receiveDataUpload = (callback) => {
333
374
  let filename = "";
334
- this.receiveData("upload", (clientId, message) => {
335
- if (typeof message === "string") {
336
- filename = message;
375
+ this.receiveData("upload", (data, clientId) => {
376
+ if (typeof data === "string") {
377
+ filename = data;
337
378
  }
338
379
  else {
339
- callback(clientId, message, filename);
380
+ callback(data, filename, clientId);
340
381
  filename = "";
341
382
  }
342
383
  });
343
384
  };
344
- receiveDataOff = (tag) => {
345
- if (this.callbackHandleResponseMap.has(`cws_${tag}`)) {
346
- this.callbackHandleResponseMap.delete(`cws_${tag}`);
347
- }
348
- };
349
- sendDataBroadcast = (message, excludeClientId) => {
350
- for (const clientId of this.clientMap.keys()) {
351
- if (clientId !== excludeClientId) {
352
- this.sendData(clientId, "text", message, "broadcast");
353
- }
354
- }
355
- };
356
385
  }
357
386
  exports.default = Manager;
358
387
  //# sourceMappingURL=Manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../../src/server/Manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../../src/server/Manager.ts"],"names":[],"mappings":"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"}
@@ -4,26 +4,36 @@ import * as Net from "net";
4
4
  export { Http as IhttpServer };
5
5
  export { Https as IhttpsServer };
6
6
  export interface Iclient {
7
+ id: string;
8
+ signature: string;
9
+ username: string;
7
10
  socket: Net.Socket;
8
11
  buffer: Buffer;
9
- signature: string;
10
12
  opCode: number;
11
13
  fragmentList: Buffer[];
12
14
  intervalPing: NodeJS.Timeout | undefined;
13
15
  lastPong: number;
14
16
  }
17
+ export interface IhandleReceiveData {
18
+ tag: string;
19
+ callback: IcallbackReceiveData<TreceiveData>;
20
+ }
15
21
  export interface IcallbackHandleFrame {
16
22
  (clientOpCode: number, clientFragmentList: Buffer[]): void;
17
23
  }
18
- export interface IcallbackHandleResponse {
19
- (clientId: string, message: ThandleMessage): void;
24
+ export interface IcallbackReceiveData<T> {
25
+ (data: T, clientId: string): void;
20
26
  }
21
27
  export interface IcallbackReceiveDataUpload {
22
- (clientId: string, messageList: Buffer[], filename: string): void;
28
+ (dataList: Buffer[], filename: string, clientId: string): void;
23
29
  }
24
30
  export interface Imessage {
25
31
  tag: string;
26
32
  data: string;
27
33
  }
28
- export type TsendMessage = string | Record<string, unknown> | Buffer;
29
- export type ThandleMessage = string | Buffer[];
34
+ export interface ImessageDirect {
35
+ content: TsendData;
36
+ toClientId: string;
37
+ }
38
+ export type TreceiveData = string | Buffer[];
39
+ export type TsendData = string | Record<string, unknown> | Buffer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cimo/websocket",
3
- "version": "1.4.45",
3
+ "version": "1.5.45",
4
4
  "description": "Websocket (server/client). Light, fast and secure.",
5
5
  "author": "cimo",
6
6
  "license": "MIT",