extra-native-websocket 0.2.2 → 0.3.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.
- package/README.md +8 -11
- package/lib/es2015/extra-native-websocket.d.ts +7 -11
- package/lib/es2015/extra-native-websocket.js +6 -28
- package/lib/es2015/extra-native-websocket.js.map +1 -1
- package/lib/es2015/utils/auto-reconnect-with-exponential-back-off.js +7 -10
- package/lib/es2015/utils/auto-reconnect-with-exponential-back-off.js.map +1 -1
- package/lib/es2015/utils/auto-reconnect.js +5 -5
- package/lib/es2015/utils/auto-reconnect.js.map +1 -1
- package/lib/es2018/extra-native-websocket.d.ts +7 -11
- package/lib/es2018/extra-native-websocket.js +6 -28
- package/lib/es2018/extra-native-websocket.js.map +1 -1
- package/lib/es2018/utils/auto-reconnect-with-exponential-back-off.js +7 -10
- package/lib/es2018/utils/auto-reconnect-with-exponential-back-off.js.map +1 -1
- package/lib/es2018/utils/auto-reconnect.js +5 -5
- package/lib/es2018/utils/auto-reconnect.js.map +1 -1
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -17,6 +17,8 @@ class WebSocketError extends CustomError {
|
|
|
17
17
|
|
|
18
18
|
### ExtraNativeWebSocket
|
|
19
19
|
```ts
|
|
20
|
+
import { Emitter } from '@blackglory/structures'
|
|
21
|
+
|
|
20
22
|
enum BinaryType {
|
|
21
23
|
Blob
|
|
22
24
|
, ArrayBuffer
|
|
@@ -29,7 +31,12 @@ enum State {
|
|
|
29
31
|
, Closing
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
class ExtraNativeWebSocket {
|
|
34
|
+
class ExtraNativeWebSocket extends Emitter<{
|
|
35
|
+
message: [event: MessageEvent]
|
|
36
|
+
close: [event: CloseEvent]
|
|
37
|
+
error: [event: Event]
|
|
38
|
+
open: [event: Event]
|
|
39
|
+
}> {
|
|
33
40
|
constructor(createWebSocket: () => WebSocket)
|
|
34
41
|
|
|
35
42
|
getState(): State
|
|
@@ -42,16 +49,6 @@ class ExtraNativeWebSocket {
|
|
|
42
49
|
connect(): Promise<void>
|
|
43
50
|
close(code?: number, reason?: string): Promise<void>
|
|
44
51
|
send(data: unknown): void
|
|
45
|
-
|
|
46
|
-
addEventListener(event: 'message', listener: (event: MessageEvent) => void): void
|
|
47
|
-
addEventListener(event: 'close', listener: (event: CloseEvent) => void): void
|
|
48
|
-
addEventListener(event: 'error', listener: (event: Event) => void): void
|
|
49
|
-
addEventListener(event: 'open', listener: (event: Event) => void): void
|
|
50
|
-
|
|
51
|
-
removeEventListener(event: 'message', listener: (event: MessageEvent) => void): void
|
|
52
|
-
removeEventListener(event: 'close', listener: (event: CloseEvent) => void): void
|
|
53
|
-
removeEventListener(event: 'error', listener: (event: Event) => void): void
|
|
54
|
-
removeEventListener(event: 'open', listener: (event: Event) => void): void
|
|
55
52
|
}
|
|
56
53
|
```
|
|
57
54
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Queue } from '@blackglory/structures';
|
|
1
|
+
import { Queue, Emitter } from '@blackglory/structures';
|
|
2
2
|
export declare enum BinaryType {
|
|
3
3
|
Blob = 0,
|
|
4
4
|
ArrayBuffer = 1
|
|
@@ -9,24 +9,20 @@ export declare enum State {
|
|
|
9
9
|
Connected = 2,
|
|
10
10
|
Closing = 3
|
|
11
11
|
}
|
|
12
|
-
export declare class ExtraNativeWebSocket {
|
|
12
|
+
export declare class ExtraNativeWebSocket extends Emitter<{
|
|
13
|
+
message: [event: MessageEvent];
|
|
14
|
+
close: [event: CloseEvent];
|
|
15
|
+
error: [event: Event];
|
|
16
|
+
open: [event: Event];
|
|
17
|
+
}> {
|
|
13
18
|
private createWebSocket;
|
|
14
19
|
private instance?;
|
|
15
|
-
private eventListeners;
|
|
16
20
|
private binaryType;
|
|
17
21
|
protected unsentMessages: Queue<string | ArrayBufferLike | ArrayBufferView | Blob>;
|
|
18
22
|
constructor(createWebSocket: () => WebSocket);
|
|
19
23
|
getState(): State;
|
|
20
24
|
getBinaryType(): BinaryType;
|
|
21
25
|
setBinaryType(val: BinaryType): void;
|
|
22
|
-
addEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
|
|
23
|
-
addEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
|
|
24
|
-
addEventListener(event: 'error', listener: (event: Event) => void): void;
|
|
25
|
-
addEventListener(event: 'open', listener: (event: Event) => void): void;
|
|
26
|
-
removeEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
|
|
27
|
-
removeEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
|
|
28
|
-
removeEventListener(event: 'error', listener: (event: Event) => void): void;
|
|
29
|
-
removeEventListener(event: 'open', listener: (event: Event) => void): void;
|
|
30
26
|
connect(): Promise<void>;
|
|
31
27
|
close(code?: number, reason?: string): Promise<void>;
|
|
32
28
|
send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
|
|
@@ -23,10 +23,10 @@ var ReadyState;
|
|
|
23
23
|
ReadyState[ReadyState["CLOSING"] = 2] = "CLOSING";
|
|
24
24
|
ReadyState[ReadyState["CLOSED"] = 3] = "CLOSED";
|
|
25
25
|
})(ReadyState || (ReadyState = {}));
|
|
26
|
-
class ExtraNativeWebSocket {
|
|
26
|
+
class ExtraNativeWebSocket extends structures_1.Emitter {
|
|
27
27
|
constructor(createWebSocket) {
|
|
28
|
+
super();
|
|
28
29
|
this.createWebSocket = createWebSocket;
|
|
29
|
-
this.eventListeners = new Map();
|
|
30
30
|
this.binaryType = BinaryType.Blob;
|
|
31
31
|
this.unsentMessages = new structures_1.Queue();
|
|
32
32
|
}
|
|
@@ -61,38 +61,16 @@ class ExtraNativeWebSocket {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
addEventListener(event, listener) {
|
|
65
|
-
var _a;
|
|
66
|
-
if (!this.eventListeners.has(event)) {
|
|
67
|
-
this.eventListeners.set(event, new Set());
|
|
68
|
-
}
|
|
69
|
-
const listeners = this.eventListeners.get(event);
|
|
70
|
-
listeners.add(listener);
|
|
71
|
-
(_a = this.instance) === null || _a === void 0 ? void 0 : _a.addEventListener(event, listener);
|
|
72
|
-
}
|
|
73
|
-
removeEventListener(event, listener) {
|
|
74
|
-
var _a;
|
|
75
|
-
if (!this.eventListeners.has(event)) {
|
|
76
|
-
this.eventListeners.set(event, new Set());
|
|
77
|
-
}
|
|
78
|
-
const listeners = this.eventListeners.get(event);
|
|
79
|
-
listeners.delete(listener);
|
|
80
|
-
if (listeners.size === 0) {
|
|
81
|
-
this.eventListeners.delete(event);
|
|
82
|
-
}
|
|
83
|
-
(_a = this.instance) === null || _a === void 0 ? void 0 : _a.removeEventListener(event, listener);
|
|
84
|
-
}
|
|
85
64
|
connect() {
|
|
86
65
|
return new Promise((resolve, reject) => {
|
|
87
66
|
(0, prelude_1.assert)(this.getState() === State.Closed, 'WebSocket is not closed');
|
|
88
67
|
const self = this;
|
|
89
68
|
const ws = this.instance = this.createWebSocket();
|
|
90
69
|
ws.addEventListener('error', errorListener, { once: true });
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
70
|
+
ws.addEventListener('open', event => this.emit('open', event));
|
|
71
|
+
ws.addEventListener('close', event => this.emit('close', event));
|
|
72
|
+
ws.addEventListener('message', event => this.emit('message', event));
|
|
73
|
+
ws.addEventListener('error', event => this.emit('error', event));
|
|
96
74
|
this.setBinaryType(this.binaryType);
|
|
97
75
|
ws.addEventListener('open', openListener, { once: true });
|
|
98
76
|
function errorListener(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAC5C,uDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,19 +17,16 @@ const extra_promise_1 = require("extra-promise");
|
|
|
17
17
|
const wait_for_1 = require("@blackglory/wait-for");
|
|
18
18
|
function autoReconnectWithExponentialBackOff(ws, { baseTimeout, maxTimeout = Infinity, factor = 2, jitter = true }) {
|
|
19
19
|
const controller = new AbortController();
|
|
20
|
-
ws.
|
|
21
|
-
ws.
|
|
20
|
+
const removeErrorListener = ws.on('error', prelude_1.pass);
|
|
21
|
+
let removeCloseListener = ws.on('close', closeListener);
|
|
22
22
|
return () => {
|
|
23
23
|
controller.abort();
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
removeCloseListener();
|
|
25
|
+
removeErrorListener();
|
|
26
26
|
};
|
|
27
|
-
function
|
|
28
|
-
(0, prelude_1.pass)();
|
|
29
|
-
}
|
|
30
|
-
function listener() {
|
|
27
|
+
function closeListener() {
|
|
31
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
|
|
29
|
+
removeCloseListener();
|
|
33
30
|
let retries = 0;
|
|
34
31
|
while (true) {
|
|
35
32
|
if (controller.signal.aborted)
|
|
@@ -48,7 +45,7 @@ function autoReconnectWithExponentialBackOff(ws, { baseTimeout, maxTimeout = Inf
|
|
|
48
45
|
yield ws.connect();
|
|
49
46
|
if (controller.signal.aborted)
|
|
50
47
|
return;
|
|
51
|
-
ws.
|
|
48
|
+
removeCloseListener = ws.on('close', closeListener);
|
|
52
49
|
break;
|
|
53
50
|
}
|
|
54
51
|
catch (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-reconnect-with-exponential-back-off.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect-with-exponential-back-off.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAyE;AACzE,+CAAiE;AACjE,iDAA0C;AAC1C,iDAAqC;AACrC,mDAAsD;AAEtD,SAAgB,mCAAmC,CACjD,EAAwB,EACxB,EACE,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAGxC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"auto-reconnect-with-exponential-back-off.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect-with-exponential-back-off.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAyE;AACzE,+CAAiE;AACjE,iDAA0C;AAC1C,iDAAqC;AACrC,mDAAsD;AAEtD,SAAgB,mCAAmC,CACjD,EAAwB,EACxB,EACE,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAGxC,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,cAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,SAAe,aAAa;;YAC1B,mBAAmB,EAAE,CAAA;YAErB,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,OAAO,IAAI,EAAE;gBACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,MAAM,IAAA,qBAAK,EAAC,IAAA,iDAAkC,EAAC;oBAC7C,OAAO;oBACP,WAAW;oBACX,UAAU;oBACV,MAAM;oBACN,MAAM;iBACP,CAAC,CAAC,CAAA;gBACH,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,IAAI;oBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;oBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;oBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;wBAAE,OAAM;oBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;oBACnD,MAAK;iBACN;gBAAC,WAAM;oBACN,OAAO,EAAE,CAAA;oBACT,IAAA,cAAI,GAAE,CAAA;iBACP;aACF;QACH,CAAC;KAAA;AACH,CAAC;AAvDD,kFAuDC"}
|
|
@@ -17,14 +17,14 @@ const prelude_1 = require("@blackglory/prelude");
|
|
|
17
17
|
const wait_for_1 = require("@blackglory/wait-for");
|
|
18
18
|
function autoReconnect(ws, timeout = 0) {
|
|
19
19
|
const controller = new extra_abort_1.AbortController();
|
|
20
|
-
ws.
|
|
20
|
+
let removeCloseListener = ws.on('close', closeListener);
|
|
21
21
|
return () => {
|
|
22
22
|
controller.abort();
|
|
23
|
-
|
|
23
|
+
removeCloseListener();
|
|
24
24
|
};
|
|
25
|
-
function
|
|
25
|
+
function closeListener() {
|
|
26
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
-
|
|
27
|
+
removeCloseListener();
|
|
28
28
|
while (true) {
|
|
29
29
|
if (controller.signal.aborted)
|
|
30
30
|
return;
|
|
@@ -36,7 +36,7 @@ function autoReconnect(ws, timeout = 0) {
|
|
|
36
36
|
yield ws.connect();
|
|
37
37
|
if (controller.signal.aborted)
|
|
38
38
|
return;
|
|
39
|
-
ws.
|
|
39
|
+
removeCloseListener = ws.on('close', closeListener);
|
|
40
40
|
break;
|
|
41
41
|
}
|
|
42
42
|
catch (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAyE;AACzE,iDAAqC;AACrC,6CAA6C;AAC7C,iDAA0C;AAC1C,mDAAsD;AAEtD,SAAgB,aAAa,CAAC,EAAwB,EAAE,UAAkB,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAyE;AACzE,iDAAqC;AACrC,6CAA6C;AAC7C,iDAA0C;AAC1C,mDAAsD;AAEtD,SAAgB,aAAa,CAAC,EAAwB,EAAE,UAAkB,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,SAAe,aAAa;;YAC1B,mBAAmB,EAAE,CAAA;YAErB,OAAO,IAAI,EAAE;gBACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,MAAM,IAAA,qBAAK,EAAC,OAAO,CAAC,CAAA;gBACpB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,IAAI;oBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;oBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;oBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;wBAAE,OAAM;oBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;oBACnD,MAAK;iBACN;gBAAC,WAAM;oBACN,IAAA,cAAI,GAAE,CAAA;iBACP;aACF;QACH,CAAC;KAAA;AACH,CAAC;AA/BD,sCA+BC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Queue } from '@blackglory/structures';
|
|
1
|
+
import { Queue, Emitter } from '@blackglory/structures';
|
|
2
2
|
export declare enum BinaryType {
|
|
3
3
|
Blob = 0,
|
|
4
4
|
ArrayBuffer = 1
|
|
@@ -9,24 +9,20 @@ export declare enum State {
|
|
|
9
9
|
Connected = 2,
|
|
10
10
|
Closing = 3
|
|
11
11
|
}
|
|
12
|
-
export declare class ExtraNativeWebSocket {
|
|
12
|
+
export declare class ExtraNativeWebSocket extends Emitter<{
|
|
13
|
+
message: [event: MessageEvent];
|
|
14
|
+
close: [event: CloseEvent];
|
|
15
|
+
error: [event: Event];
|
|
16
|
+
open: [event: Event];
|
|
17
|
+
}> {
|
|
13
18
|
private createWebSocket;
|
|
14
19
|
private instance?;
|
|
15
|
-
private eventListeners;
|
|
16
20
|
private binaryType;
|
|
17
21
|
protected unsentMessages: Queue<string | ArrayBufferLike | ArrayBufferView | Blob>;
|
|
18
22
|
constructor(createWebSocket: () => WebSocket);
|
|
19
23
|
getState(): State;
|
|
20
24
|
getBinaryType(): BinaryType;
|
|
21
25
|
setBinaryType(val: BinaryType): void;
|
|
22
|
-
addEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
|
|
23
|
-
addEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
|
|
24
|
-
addEventListener(event: 'error', listener: (event: Event) => void): void;
|
|
25
|
-
addEventListener(event: 'open', listener: (event: Event) => void): void;
|
|
26
|
-
removeEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
|
|
27
|
-
removeEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
|
|
28
|
-
removeEventListener(event: 'error', listener: (event: Event) => void): void;
|
|
29
|
-
removeEventListener(event: 'open', listener: (event: Event) => void): void;
|
|
30
26
|
connect(): Promise<void>;
|
|
31
27
|
close(code?: number, reason?: string): Promise<void>;
|
|
32
28
|
send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
|
|
@@ -23,10 +23,10 @@ var ReadyState;
|
|
|
23
23
|
ReadyState[ReadyState["CLOSING"] = 2] = "CLOSING";
|
|
24
24
|
ReadyState[ReadyState["CLOSED"] = 3] = "CLOSED";
|
|
25
25
|
})(ReadyState || (ReadyState = {}));
|
|
26
|
-
class ExtraNativeWebSocket {
|
|
26
|
+
class ExtraNativeWebSocket extends structures_1.Emitter {
|
|
27
27
|
constructor(createWebSocket) {
|
|
28
|
+
super();
|
|
28
29
|
this.createWebSocket = createWebSocket;
|
|
29
|
-
this.eventListeners = new Map();
|
|
30
30
|
this.binaryType = BinaryType.Blob;
|
|
31
31
|
this.unsentMessages = new structures_1.Queue();
|
|
32
32
|
}
|
|
@@ -61,38 +61,16 @@ class ExtraNativeWebSocket {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
addEventListener(event, listener) {
|
|
65
|
-
var _a;
|
|
66
|
-
if (!this.eventListeners.has(event)) {
|
|
67
|
-
this.eventListeners.set(event, new Set());
|
|
68
|
-
}
|
|
69
|
-
const listeners = this.eventListeners.get(event);
|
|
70
|
-
listeners.add(listener);
|
|
71
|
-
(_a = this.instance) === null || _a === void 0 ? void 0 : _a.addEventListener(event, listener);
|
|
72
|
-
}
|
|
73
|
-
removeEventListener(event, listener) {
|
|
74
|
-
var _a;
|
|
75
|
-
if (!this.eventListeners.has(event)) {
|
|
76
|
-
this.eventListeners.set(event, new Set());
|
|
77
|
-
}
|
|
78
|
-
const listeners = this.eventListeners.get(event);
|
|
79
|
-
listeners.delete(listener);
|
|
80
|
-
if (listeners.size === 0) {
|
|
81
|
-
this.eventListeners.delete(event);
|
|
82
|
-
}
|
|
83
|
-
(_a = this.instance) === null || _a === void 0 ? void 0 : _a.removeEventListener(event, listener);
|
|
84
|
-
}
|
|
85
64
|
connect() {
|
|
86
65
|
return new Promise((resolve, reject) => {
|
|
87
66
|
(0, prelude_1.assert)(this.getState() === State.Closed, 'WebSocket is not closed');
|
|
88
67
|
const self = this;
|
|
89
68
|
const ws = this.instance = this.createWebSocket();
|
|
90
69
|
ws.addEventListener('error', errorListener, { once: true });
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
70
|
+
ws.addEventListener('open', event => this.emit('open', event));
|
|
71
|
+
ws.addEventListener('close', event => this.emit('close', event));
|
|
72
|
+
ws.addEventListener('message', event => this.emit('message', event));
|
|
73
|
+
ws.addEventListener('error', event => this.emit('error', event));
|
|
96
74
|
this.setBinaryType(this.binaryType);
|
|
97
75
|
ws.addEventListener('open', openListener, { once: true });
|
|
98
76
|
function errorListener(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAC5C,uDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,18 +8,15 @@ const extra_promise_1 = require("extra-promise");
|
|
|
8
8
|
const wait_for_1 = require("@blackglory/wait-for");
|
|
9
9
|
function autoReconnectWithExponentialBackOff(ws, { baseTimeout, maxTimeout = Infinity, factor = 2, jitter = true }) {
|
|
10
10
|
const controller = new AbortController();
|
|
11
|
-
ws.
|
|
12
|
-
ws.
|
|
11
|
+
const removeErrorListener = ws.on('error', prelude_1.pass);
|
|
12
|
+
let removeCloseListener = ws.on('close', closeListener);
|
|
13
13
|
return () => {
|
|
14
14
|
controller.abort();
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
removeCloseListener();
|
|
16
|
+
removeErrorListener();
|
|
17
17
|
};
|
|
18
|
-
function
|
|
19
|
-
(
|
|
20
|
-
}
|
|
21
|
-
async function listener() {
|
|
22
|
-
ws.removeEventListener('close', listener);
|
|
18
|
+
async function closeListener() {
|
|
19
|
+
removeCloseListener();
|
|
23
20
|
let retries = 0;
|
|
24
21
|
while (true) {
|
|
25
22
|
if (controller.signal.aborted)
|
|
@@ -38,7 +35,7 @@ function autoReconnectWithExponentialBackOff(ws, { baseTimeout, maxTimeout = Inf
|
|
|
38
35
|
await ws.connect();
|
|
39
36
|
if (controller.signal.aborted)
|
|
40
37
|
return;
|
|
41
|
-
ws.
|
|
38
|
+
removeCloseListener = ws.on('close', closeListener);
|
|
42
39
|
break;
|
|
43
40
|
}
|
|
44
41
|
catch (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-reconnect-with-exponential-back-off.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect-with-exponential-back-off.ts"],"names":[],"mappings":";;;AAAA,sEAAyE;AACzE,+CAAiE;AACjE,iDAA0C;AAC1C,iDAAqC;AACrC,mDAAsD;AAEtD,SAAgB,mCAAmC,CACjD,EAAwB,EACxB,EACE,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAGxC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"auto-reconnect-with-exponential-back-off.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect-with-exponential-back-off.ts"],"names":[],"mappings":";;;AAAA,sEAAyE;AACzE,+CAAiE;AACjE,iDAA0C;AAC1C,iDAAqC;AACrC,mDAAsD;AAEtD,SAAgB,mCAAmC,CACjD,EAAwB,EACxB,EACE,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAGxC,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,cAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,mBAAmB,EAAE,CAAA;QAErB,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE;YACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,IAAA,qBAAK,EAAC,IAAA,iDAAkC,EAAC;gBAC7C,OAAO;gBACP,WAAW;gBACX,UAAU;gBACV,MAAM;gBACN,MAAM;aACP,CAAC,CAAC,CAAA;YACH,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI;gBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;gBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBACnD,MAAK;aACN;YAAC,WAAM;gBACN,OAAO,EAAE,CAAA;gBACT,IAAA,cAAI,GAAE,CAAA;aACP;SACF;IACH,CAAC;AACH,CAAC;AAvDD,kFAuDC"}
|
|
@@ -8,13 +8,13 @@ const prelude_1 = require("@blackglory/prelude");
|
|
|
8
8
|
const wait_for_1 = require("@blackglory/wait-for");
|
|
9
9
|
function autoReconnect(ws, timeout = 0) {
|
|
10
10
|
const controller = new extra_abort_1.AbortController();
|
|
11
|
-
ws.
|
|
11
|
+
let removeCloseListener = ws.on('close', closeListener);
|
|
12
12
|
return () => {
|
|
13
13
|
controller.abort();
|
|
14
|
-
|
|
14
|
+
removeCloseListener();
|
|
15
15
|
};
|
|
16
|
-
async function
|
|
17
|
-
|
|
16
|
+
async function closeListener() {
|
|
17
|
+
removeCloseListener();
|
|
18
18
|
while (true) {
|
|
19
19
|
if (controller.signal.aborted)
|
|
20
20
|
return;
|
|
@@ -26,7 +26,7 @@ function autoReconnect(ws, timeout = 0) {
|
|
|
26
26
|
await ws.connect();
|
|
27
27
|
if (controller.signal.aborted)
|
|
28
28
|
return;
|
|
29
|
-
ws.
|
|
29
|
+
removeCloseListener = ws.on('close', closeListener);
|
|
30
30
|
break;
|
|
31
31
|
}
|
|
32
32
|
catch (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;AAAA,sEAAyE;AACzE,iDAAqC;AACrC,6CAA6C;AAC7C,iDAA0C;AAC1C,mDAAsD;AAEtD,SAAgB,aAAa,CAAC,EAAwB,EAAE,UAAkB,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;AAAA,sEAAyE;AACzE,iDAAqC;AACrC,6CAA6C;AAC7C,iDAA0C;AAC1C,mDAAsD;AAEtD,SAAgB,aAAa,CAAC,EAAwB,EAAE,UAAkB,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,mBAAmB,EAAE,CAAA;QAErB,OAAO,IAAI,EAAE;YACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,IAAA,qBAAK,EAAC,OAAO,CAAC,CAAA;YACpB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI;gBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;gBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBACnD,MAAK;aACN;YAAC,WAAM;gBACN,IAAA,cAAI,GAAE,CAAA;aACP;SACF;IACH,CAAC;AACH,CAAC;AA/BD,sCA+BC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "extra-native-websocket",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"files": [
|
|
@@ -34,32 +34,32 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@commitlint/cli": "^17.0.
|
|
38
|
-
"@commitlint/config-conventional": "^17.0.
|
|
37
|
+
"@commitlint/cli": "^17.0.2",
|
|
38
|
+
"@commitlint/config-conventional": "^17.0.2",
|
|
39
39
|
"@types/jest": "^27.5.1",
|
|
40
40
|
"@types/ws": "^8.5.3",
|
|
41
|
-
"@typescript-eslint/eslint-plugin": "^5.27.
|
|
42
|
-
"@typescript-eslint/parser": "^5.27.
|
|
43
|
-
"eslint": "^8.
|
|
41
|
+
"@typescript-eslint/eslint-plugin": "^5.27.1",
|
|
42
|
+
"@typescript-eslint/parser": "^5.27.1",
|
|
43
|
+
"eslint": "^8.17.0",
|
|
44
44
|
"husky": "4",
|
|
45
|
-
"jest": "^28.1.
|
|
46
|
-
"jest-environment-jsdom": "^28.1.
|
|
45
|
+
"jest": "^28.1.1",
|
|
46
|
+
"jest-environment-jsdom": "^28.1.1",
|
|
47
47
|
"npm-run-all": "^4.1.5",
|
|
48
48
|
"return-style": "^1.0.0",
|
|
49
49
|
"rimraf": "^3.0.2",
|
|
50
50
|
"standard-version": "^9.5.0",
|
|
51
|
-
"ts-jest": "^28.0.
|
|
51
|
+
"ts-jest": "^28.0.4",
|
|
52
52
|
"ts-patch": "^2.0.1",
|
|
53
53
|
"tslib": "^2.4.0",
|
|
54
|
-
"typescript": "^4.7.
|
|
54
|
+
"typescript": "^4.7.3",
|
|
55
55
|
"typescript-transform-paths": "^3.3.1",
|
|
56
56
|
"ws": "^8.7.0"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@blackglory/errors": "^2.2.1",
|
|
60
60
|
"@blackglory/prelude": "^0.1.1",
|
|
61
|
-
"@blackglory/structures": "^0.
|
|
62
|
-
"@blackglory/wait-for": "^0.
|
|
61
|
+
"@blackglory/structures": "^0.6.0",
|
|
62
|
+
"@blackglory/wait-for": "^0.5.0",
|
|
63
63
|
"extra-abort": "^0.1.2",
|
|
64
64
|
"extra-promise": "^2.0.0"
|
|
65
65
|
}
|