Skip to content

Commit 4be377d

Browse files
committed
optimization and bug fix
1 parent 117ddc0 commit 4be377d

File tree

2 files changed

+52
-39
lines changed

2 files changed

+52
-39
lines changed

src/AsyncClientWebSocket.js

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Async Client Websocket v1.2.5
2+
* Async Client Websocket v1.2.8
33
* by Jean Kássio
44
*
55
* More info:
@@ -64,7 +64,7 @@ class WebSocketClient{
6464
}
6565

6666
if(this.queueLocalStorage){
67-
loadQueue();
67+
this.loadQueue();
6868
}
6969

7070
while(this.messageQueue.length > 0){
@@ -86,25 +86,25 @@ class WebSocketClient{
8686

8787
this._log("Received Message:", message);
8888

89-
if(this.incomingMiddleware){
90-
message = this.incomingMiddleware(message);
91-
this._log("Incoming Middleware return:", message);
92-
}
93-
94-
if(this.onMessage){
89+
if(this.recordLatency && message === this.pong){
90+
91+
this.latencyTimestamp = Date.now();
92+
this.latency = this.latencyTimestamp - this.lastPingTimestamp;
93+
94+
if(this.onLatency){
95+
this.onLatency(this.latency);
96+
}
97+
98+
this._log("Calculated latency:", this.latency);
99+
100+
}else{
101+
102+
if(this.incomingMiddleware){
103+
message = this.incomingMiddleware(message);
104+
this._log("Incoming Middleware return:", message);
105+
}
95106

96-
if(this.recordLatency && message === this.pong){
97-
98-
this.latencyTimestamp = Date.now();
99-
this.latency = this.latencyTimestamp - this.lastPingTimestamp;
100-
101-
if(this.onLatency){
102-
this.onLatency(this.latency);
103-
}
104-
105-
this._log("Calculated latency:", this.latency);
106-
107-
}else{
107+
if(this.onMessage){
108108
this.onMessage(message);
109109
}
110110

@@ -114,6 +114,10 @@ class WebSocketClient{
114114

115115
this.socket.onerror = (error) => {
116116

117+
if(timer){
118+
clearTimeout(timer);
119+
}
120+
117121
if(this.onError){
118122
this.onError(error);
119123
}
@@ -126,6 +130,10 @@ class WebSocketClient{
126130

127131
this.socket.onclose = (event) => {
128132

133+
if(timer){
134+
clearTimeout(timer);
135+
}
136+
129137
if(this.onClose){
130138
this.onClose(event);
131139
}
@@ -134,6 +142,8 @@ class WebSocketClient{
134142

135143
this._attemptReconnect();
136144

145+
reject();
146+
137147
};
138148

139149
});
@@ -177,7 +187,7 @@ class WebSocketClient{
177187
this.messageQueue.push(message);
178188

179189
if(this.queueLocalStorage){
180-
saveQueue(this.messageQueue);
190+
this.saveQueue(this.messageQueue);
181191
}
182192

183193
this._log("Websocket is not open! Putting message in queue");
@@ -247,6 +257,10 @@ class WebSocketClient{
247257
clearInterval(this.keepAliveInterval);
248258
}
249259

260+
if(this.recordLatency){
261+
return;
262+
}
263+
250264
this.keepAliveInterval = setInterval(() => {
251265

252266
this._log("Send ping to KeepAlive");
@@ -294,14 +308,12 @@ class WebSocketClient{
294308

295309
}
296310

297-
trackLatency(ping, pong, interval = 10000){
311+
trackLatency(interval = 10000, ping, pong){
298312

299313
this._log("Starting track latency");
300314

301315
this.recordLatency = true;
302316

303-
this.lastPingTimestamp = Date.now();
304-
305317
if(ping){
306318
this.ping = ping;
307319
this._log("Set ping name:", ping);
@@ -312,16 +324,24 @@ class WebSocketClient{
312324
this._log("Set pong name:", pong);
313325
}
314326

327+
this._trackLatency();
328+
315329
this.pingInterval = setInterval(() => {
316330

317-
this.lastPingTimestamp = Date.now();
318-
this.send(this.ping);
319-
this._log("Send ping to latency:", this.ping);
331+
this._trackLatency();
320332

321333
}, interval);
322334

323335
}
324336

337+
_trackLatency(){
338+
339+
this.lastPingTimestamp = Date.now();
340+
this.send(this.ping);
341+
this._log("Send ping to latency:", this.ping);
342+
343+
}
344+
325345
autoReconnect(interval = 3000, maxAttemps = Infinity, callback = null){
326346

327347
this._autoReconnect = true;
@@ -369,7 +389,7 @@ class WebSocketClient{
369389

370390
}
371391

372-
_attemptReconnect(){
392+
async _attemptReconnect(){
373393

374394
if(!this._autoReconnect || this.reconnectAttemps >= this.maxReconnectAttemps){
375395
return;
@@ -379,22 +399,15 @@ class WebSocketClient{
379399

380400
this.connect().then(() => {
381401

382-
this._log("Websocket reconnected successfully");
402+
this._log("[WebSocket] Reconnected successfully");
383403

384404
this.reconnectAttemps = 0;
385405

386406
if(this.reconnectCallback){
387407
this.reconnectCallback();
388-
this._log("Reconnect callback was called");
408+
this._log("[WebSocket] Reconnect callback was called");
389409
}
390410

391-
}).catch(() => {
392-
393-
this._log("Error reconnecting Websocket");
394-
395-
this.reconnectAttemps++;
396-
this._attemptReconnect();
397-
398411
});
399412

400413
}, this.reconnectInterval);

src/AsyncClientWebSocket.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)