@enbox/dwn-clients 0.2.6 → 0.3.1
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.
|
@@ -34,6 +34,9 @@ const RESPONSE_TIMEOUT = 30000;
|
|
|
34
34
|
const DEFAULT_BASE_RECONNECT_DELAY = 1000;
|
|
35
35
|
const DEFAULT_MAX_RECONNECT_DELAY = 30000;
|
|
36
36
|
const DEFAULT_MAX_RECONNECT_ATTEMPTS = Infinity;
|
|
37
|
+
/** Default heartbeat settings. */
|
|
38
|
+
const DEFAULT_HEARTBEAT_INTERVAL = 30000;
|
|
39
|
+
const DEFAULT_HEARTBEAT_TIMEOUT = 10000;
|
|
37
40
|
/**
|
|
38
41
|
* JSON RPC Socket Client for WebSocket request/response and long-running subscriptions.
|
|
39
42
|
*
|
|
@@ -63,6 +66,8 @@ export class JsonRpcSocket {
|
|
|
63
66
|
this.reconnecting = false;
|
|
64
67
|
/** Whether the socket is currently connected. */
|
|
65
68
|
this._isConnected = false;
|
|
69
|
+
/** Whether a heartbeat pong is pending. */
|
|
70
|
+
this._awaitingPong = false;
|
|
66
71
|
this.url = url;
|
|
67
72
|
this.options = options;
|
|
68
73
|
this._isConnected = true;
|
|
@@ -86,6 +91,7 @@ export class JsonRpcSocket {
|
|
|
86
91
|
}
|
|
87
92
|
const jsonRpcSocket = new JsonRpcSocket(socket, responseTimeout, url, options);
|
|
88
93
|
jsonRpcSocket.wireSocket(socket);
|
|
94
|
+
jsonRpcSocket.startHeartbeat();
|
|
89
95
|
return jsonRpcSocket;
|
|
90
96
|
});
|
|
91
97
|
}
|
|
@@ -95,6 +101,7 @@ export class JsonRpcSocket {
|
|
|
95
101
|
close() {
|
|
96
102
|
this.closedByUser = true;
|
|
97
103
|
this._isConnected = false;
|
|
104
|
+
this.stopHeartbeat();
|
|
98
105
|
this.socket.close();
|
|
99
106
|
}
|
|
100
107
|
/**
|
|
@@ -240,6 +247,7 @@ export class JsonRpcSocket {
|
|
|
240
247
|
ws.addEventListener('close', () => {
|
|
241
248
|
var _a, _b, _c, _d, _e;
|
|
242
249
|
this._isConnected = false;
|
|
250
|
+
this.stopHeartbeat();
|
|
243
251
|
if (this.closedByUser) {
|
|
244
252
|
(_b = (_a = this.options).onclose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
245
253
|
return;
|
|
@@ -277,6 +285,84 @@ export class JsonRpcSocket {
|
|
|
277
285
|
}
|
|
278
286
|
}
|
|
279
287
|
}
|
|
288
|
+
// ---------------------------------------------------------------------------
|
|
289
|
+
// Internal: application-level heartbeat (ping/pong)
|
|
290
|
+
// ---------------------------------------------------------------------------
|
|
291
|
+
/**
|
|
292
|
+
* Starts the heartbeat interval. Sends a JSON-RPC `rpc.ping` every
|
|
293
|
+
* `heartbeatInterval` ms. If no `rpc.pong` response arrives within
|
|
294
|
+
* `heartbeatTimeout` ms, the socket is considered dead and closed
|
|
295
|
+
* (which triggers reconnection via the `close` handler).
|
|
296
|
+
*/
|
|
297
|
+
startHeartbeat() {
|
|
298
|
+
var _a, _b;
|
|
299
|
+
this.stopHeartbeat();
|
|
300
|
+
const interval = (_a = this.options.heartbeatInterval) !== null && _a !== void 0 ? _a : DEFAULT_HEARTBEAT_INTERVAL;
|
|
301
|
+
if (interval <= 0) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const timeout = (_b = this.options.heartbeatTimeout) !== null && _b !== void 0 ? _b : DEFAULT_HEARTBEAT_TIMEOUT;
|
|
305
|
+
this._heartbeatInterval = setInterval(() => {
|
|
306
|
+
if (!this._isConnected || this._awaitingPong) {
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
this._awaitingPong = true;
|
|
310
|
+
// Send a lightweight JSON-RPC request as the ping.
|
|
311
|
+
const pingId = `hb-${Date.now()}`;
|
|
312
|
+
const pingRequest = {
|
|
313
|
+
jsonrpc: '2.0',
|
|
314
|
+
id: pingId,
|
|
315
|
+
method: 'rpc.ping',
|
|
316
|
+
};
|
|
317
|
+
// Register a one-shot handler for the pong response.
|
|
318
|
+
this.messageHandlers.set(pingId, () => {
|
|
319
|
+
this._awaitingPong = false;
|
|
320
|
+
this.messageHandlers.delete(pingId);
|
|
321
|
+
if (this._heartbeatTimeout) {
|
|
322
|
+
clearTimeout(this._heartbeatTimeout);
|
|
323
|
+
this._heartbeatTimeout = undefined;
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
try {
|
|
327
|
+
this.send(pingRequest);
|
|
328
|
+
}
|
|
329
|
+
catch (_a) {
|
|
330
|
+
// Socket may already be closing — the close handler will deal with it.
|
|
331
|
+
this.messageHandlers.delete(pingId);
|
|
332
|
+
this._awaitingPong = false;
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
// If the pong doesn't arrive in time, force-close and reconnect.
|
|
336
|
+
this._heartbeatTimeout = setTimeout(() => {
|
|
337
|
+
this._heartbeatTimeout = undefined;
|
|
338
|
+
this.messageHandlers.delete(pingId);
|
|
339
|
+
this._awaitingPong = false;
|
|
340
|
+
if (!this.closedByUser && this._isConnected) {
|
|
341
|
+
console.warn('JsonRpcSocket: heartbeat timeout — closing dead connection');
|
|
342
|
+
this._isConnected = false;
|
|
343
|
+
try {
|
|
344
|
+
this.socket.close();
|
|
345
|
+
}
|
|
346
|
+
catch ( /* best effort */_a) { /* best effort */ }
|
|
347
|
+
}
|
|
348
|
+
}, timeout);
|
|
349
|
+
}, interval);
|
|
350
|
+
}
|
|
351
|
+
/** Stops the heartbeat timer and clears any pending timeout. */
|
|
352
|
+
stopHeartbeat() {
|
|
353
|
+
if (this._heartbeatInterval) {
|
|
354
|
+
clearInterval(this._heartbeatInterval);
|
|
355
|
+
this._heartbeatInterval = undefined;
|
|
356
|
+
}
|
|
357
|
+
if (this._heartbeatTimeout) {
|
|
358
|
+
clearTimeout(this._heartbeatTimeout);
|
|
359
|
+
this._heartbeatTimeout = undefined;
|
|
360
|
+
}
|
|
361
|
+
this._awaitingPong = false;
|
|
362
|
+
}
|
|
363
|
+
// ---------------------------------------------------------------------------
|
|
364
|
+
// Internal: reconnection
|
|
365
|
+
// ---------------------------------------------------------------------------
|
|
280
366
|
/**
|
|
281
367
|
* Exponential backoff reconnection loop with jitter.
|
|
282
368
|
*/
|
|
@@ -314,6 +400,7 @@ export class JsonRpcSocket {
|
|
|
314
400
|
this._isConnected = true;
|
|
315
401
|
this.reconnecting = false;
|
|
316
402
|
this.wireSocket(newSocket);
|
|
403
|
+
this.startHeartbeat();
|
|
317
404
|
(_d = (_c = this.options).onreconnected) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
318
405
|
}
|
|
319
406
|
catch (_e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-rpc-socket.js","sourceRoot":"","sources":["../../src/json-rpc-socket.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-rpc-socket.js","sourceRoot":"","sources":["../../src/json-rpc-socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,16 @@ export interface JsonRpcSocketOptions {
|
|
|
23
23
|
onreconnecting?: (attempt: number) => void;
|
|
24
24
|
/** Called when the socket has successfully reconnected. */
|
|
25
25
|
onreconnected?: () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Interval in ms between heartbeat pings. Set to `0` to disable.
|
|
28
|
+
* Default 30000 (30s).
|
|
29
|
+
*/
|
|
30
|
+
heartbeatInterval?: number;
|
|
31
|
+
/**
|
|
32
|
+
* How long in ms to wait for a pong before considering the connection dead.
|
|
33
|
+
* Default 10000 (10s).
|
|
34
|
+
*/
|
|
35
|
+
heartbeatTimeout?: number;
|
|
26
36
|
}
|
|
27
37
|
/**
|
|
28
38
|
* JSON RPC Socket Client for WebSocket request/response and long-running subscriptions.
|
|
@@ -56,6 +66,12 @@ export declare class JsonRpcSocket {
|
|
|
56
66
|
private reconnecting;
|
|
57
67
|
/** Whether the socket is currently connected. */
|
|
58
68
|
private _isConnected;
|
|
69
|
+
/** Heartbeat interval timer. */
|
|
70
|
+
private _heartbeatInterval;
|
|
71
|
+
/** Heartbeat timeout timer — fires when a pong is not received in time. */
|
|
72
|
+
private _heartbeatTimeout;
|
|
73
|
+
/** Whether a heartbeat pong is pending. */
|
|
74
|
+
private _awaitingPong;
|
|
59
75
|
private constructor();
|
|
60
76
|
/** Whether the socket is currently connected. */
|
|
61
77
|
get isConnected(): boolean;
|
|
@@ -95,6 +111,15 @@ export declare class JsonRpcSocket {
|
|
|
95
111
|
* by synthesizing a transport error event.
|
|
96
112
|
*/
|
|
97
113
|
private rejectPendingRequests;
|
|
114
|
+
/**
|
|
115
|
+
* Starts the heartbeat interval. Sends a JSON-RPC `rpc.ping` every
|
|
116
|
+
* `heartbeatInterval` ms. If no `rpc.pong` response arrives within
|
|
117
|
+
* `heartbeatTimeout` ms, the socket is considered dead and closed
|
|
118
|
+
* (which triggers reconnection via the `close` handler).
|
|
119
|
+
*/
|
|
120
|
+
private startHeartbeat;
|
|
121
|
+
/** Stops the heartbeat timer and clears any pending timeout. */
|
|
122
|
+
private stopHeartbeat;
|
|
98
123
|
/**
|
|
99
124
|
* Exponential backoff reconnection loop with jitter.
|
|
100
125
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-rpc-socket.d.ts","sourceRoot":"","sources":["../../src/json-rpc-socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"json-rpc-socket.d.ts","sourceRoot":"","sources":["../../src/json-rpc-socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAqChF,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAEhC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IAwCtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IAxCzB;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAA6D;IAEpF;;;;OAIG;IACH,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAS;IAEpB,uCAAuC;IACvC,OAAO,CAAC,OAAO,CAAuB;IAEtC,8DAA8D;IAC9D,OAAO,CAAC,YAAY,CAAS;IAE7B,+DAA+D;IAC/D,OAAO,CAAC,YAAY,CAAS;IAE7B,iDAAiD;IACjD,OAAO,CAAC,YAAY,CAAS;IAE7B,gCAAgC;IAChC,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAA4C;IAErE,2CAA2C;IAC3C,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO;IAWP,iDAAiD;IACjD,IAAW,WAAW,IAAI,OAAO,CAEhC;WAEmB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmBpG;;OAEG;IACI,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBvE;;;OAGG;IACU,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC;QACtG,QAAQ,EAAE,eAAe,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B,CAAC;IA2DH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,cAAc,GAAE,IAAI;IAQzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA+B9B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAuClB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAuDtB,gEAAgE;IAChE,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAoDzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enbox/dwn-clients",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/esm/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@enbox/common": "0.1.0",
|
|
50
50
|
"@enbox/crypto": "0.1.0",
|
|
51
|
-
"@enbox/dwn-sdk-js": "0.3.
|
|
51
|
+
"@enbox/dwn-sdk-js": "0.3.3",
|
|
52
52
|
"ms": "2.1.3"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
package/src/json-rpc-socket.ts
CHANGED
|
@@ -31,6 +31,10 @@ const DEFAULT_BASE_RECONNECT_DELAY = 1_000;
|
|
|
31
31
|
const DEFAULT_MAX_RECONNECT_DELAY = 30_000;
|
|
32
32
|
const DEFAULT_MAX_RECONNECT_ATTEMPTS = Infinity;
|
|
33
33
|
|
|
34
|
+
/** Default heartbeat settings. */
|
|
35
|
+
const DEFAULT_HEARTBEAT_INTERVAL = 30_000;
|
|
36
|
+
const DEFAULT_HEARTBEAT_TIMEOUT = 10_000;
|
|
37
|
+
|
|
34
38
|
export interface JsonRpcSocketOptions {
|
|
35
39
|
/** socket connection timeout in milliseconds */
|
|
36
40
|
connectTimeout?: number;
|
|
@@ -61,6 +65,18 @@ export interface JsonRpcSocketOptions {
|
|
|
61
65
|
|
|
62
66
|
/** Called when the socket has successfully reconnected. */
|
|
63
67
|
onreconnected?: () => void;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Interval in ms between heartbeat pings. Set to `0` to disable.
|
|
71
|
+
* Default 30000 (30s).
|
|
72
|
+
*/
|
|
73
|
+
heartbeatInterval?: number;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* How long in ms to wait for a pong before considering the connection dead.
|
|
77
|
+
* Default 10000 (10s).
|
|
78
|
+
*/
|
|
79
|
+
heartbeatTimeout?: number;
|
|
64
80
|
}
|
|
65
81
|
|
|
66
82
|
/**
|
|
@@ -100,6 +116,15 @@ export class JsonRpcSocket {
|
|
|
100
116
|
/** Whether the socket is currently connected. */
|
|
101
117
|
private _isConnected = false;
|
|
102
118
|
|
|
119
|
+
/** Heartbeat interval timer. */
|
|
120
|
+
private _heartbeatInterval: ReturnType<typeof setInterval> | undefined;
|
|
121
|
+
|
|
122
|
+
/** Heartbeat timeout timer — fires when a pong is not received in time. */
|
|
123
|
+
private _heartbeatTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
124
|
+
|
|
125
|
+
/** Whether a heartbeat pong is pending. */
|
|
126
|
+
private _awaitingPong = false;
|
|
127
|
+
|
|
103
128
|
private constructor(
|
|
104
129
|
private socket: WebSocket,
|
|
105
130
|
private responseTimeout: number,
|
|
@@ -130,6 +155,7 @@ export class JsonRpcSocket {
|
|
|
130
155
|
|
|
131
156
|
const jsonRpcSocket = new JsonRpcSocket(socket, responseTimeout, url, options);
|
|
132
157
|
jsonRpcSocket.wireSocket(socket);
|
|
158
|
+
jsonRpcSocket.startHeartbeat();
|
|
133
159
|
|
|
134
160
|
return jsonRpcSocket;
|
|
135
161
|
}
|
|
@@ -140,6 +166,7 @@ export class JsonRpcSocket {
|
|
|
140
166
|
public close(): void {
|
|
141
167
|
this.closedByUser = true;
|
|
142
168
|
this._isConnected = false;
|
|
169
|
+
this.stopHeartbeat();
|
|
143
170
|
this.socket.close();
|
|
144
171
|
}
|
|
145
172
|
|
|
@@ -306,6 +333,7 @@ export class JsonRpcSocket {
|
|
|
306
333
|
|
|
307
334
|
ws.addEventListener('close', () => {
|
|
308
335
|
this._isConnected = false;
|
|
336
|
+
this.stopHeartbeat();
|
|
309
337
|
|
|
310
338
|
if (this.closedByUser) {
|
|
311
339
|
this.options.onclose?.();
|
|
@@ -349,6 +377,88 @@ export class JsonRpcSocket {
|
|
|
349
377
|
}
|
|
350
378
|
}
|
|
351
379
|
|
|
380
|
+
// ---------------------------------------------------------------------------
|
|
381
|
+
// Internal: application-level heartbeat (ping/pong)
|
|
382
|
+
// ---------------------------------------------------------------------------
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Starts the heartbeat interval. Sends a JSON-RPC `rpc.ping` every
|
|
386
|
+
* `heartbeatInterval` ms. If no `rpc.pong` response arrives within
|
|
387
|
+
* `heartbeatTimeout` ms, the socket is considered dead and closed
|
|
388
|
+
* (which triggers reconnection via the `close` handler).
|
|
389
|
+
*/
|
|
390
|
+
private startHeartbeat(): void {
|
|
391
|
+
this.stopHeartbeat();
|
|
392
|
+
|
|
393
|
+
const interval = this.options.heartbeatInterval ?? DEFAULT_HEARTBEAT_INTERVAL;
|
|
394
|
+
if (interval <= 0) { return; }
|
|
395
|
+
|
|
396
|
+
const timeout = this.options.heartbeatTimeout ?? DEFAULT_HEARTBEAT_TIMEOUT;
|
|
397
|
+
|
|
398
|
+
this._heartbeatInterval = setInterval(() => {
|
|
399
|
+
if (!this._isConnected || this._awaitingPong) { return; }
|
|
400
|
+
|
|
401
|
+
this._awaitingPong = true;
|
|
402
|
+
|
|
403
|
+
// Send a lightweight JSON-RPC request as the ping.
|
|
404
|
+
const pingId = `hb-${Date.now()}`;
|
|
405
|
+
const pingRequest: JsonRpcRequest = {
|
|
406
|
+
jsonrpc : '2.0',
|
|
407
|
+
id : pingId,
|
|
408
|
+
method : 'rpc.ping',
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
// Register a one-shot handler for the pong response.
|
|
412
|
+
this.messageHandlers.set(pingId, () => {
|
|
413
|
+
this._awaitingPong = false;
|
|
414
|
+
this.messageHandlers.delete(pingId);
|
|
415
|
+
if (this._heartbeatTimeout) {
|
|
416
|
+
clearTimeout(this._heartbeatTimeout);
|
|
417
|
+
this._heartbeatTimeout = undefined;
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
try {
|
|
422
|
+
this.send(pingRequest);
|
|
423
|
+
} catch {
|
|
424
|
+
// Socket may already be closing — the close handler will deal with it.
|
|
425
|
+
this.messageHandlers.delete(pingId);
|
|
426
|
+
this._awaitingPong = false;
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// If the pong doesn't arrive in time, force-close and reconnect.
|
|
431
|
+
this._heartbeatTimeout = setTimeout(() => {
|
|
432
|
+
this._heartbeatTimeout = undefined;
|
|
433
|
+
this.messageHandlers.delete(pingId);
|
|
434
|
+
this._awaitingPong = false;
|
|
435
|
+
|
|
436
|
+
if (!this.closedByUser && this._isConnected) {
|
|
437
|
+
console.warn('JsonRpcSocket: heartbeat timeout — closing dead connection');
|
|
438
|
+
this._isConnected = false;
|
|
439
|
+
try { this.socket.close(); } catch { /* best effort */ }
|
|
440
|
+
}
|
|
441
|
+
}, timeout);
|
|
442
|
+
}, interval);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/** Stops the heartbeat timer and clears any pending timeout. */
|
|
446
|
+
private stopHeartbeat(): void {
|
|
447
|
+
if (this._heartbeatInterval) {
|
|
448
|
+
clearInterval(this._heartbeatInterval);
|
|
449
|
+
this._heartbeatInterval = undefined;
|
|
450
|
+
}
|
|
451
|
+
if (this._heartbeatTimeout) {
|
|
452
|
+
clearTimeout(this._heartbeatTimeout);
|
|
453
|
+
this._heartbeatTimeout = undefined;
|
|
454
|
+
}
|
|
455
|
+
this._awaitingPong = false;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
// ---------------------------------------------------------------------------
|
|
459
|
+
// Internal: reconnection
|
|
460
|
+
// ---------------------------------------------------------------------------
|
|
461
|
+
|
|
352
462
|
/**
|
|
353
463
|
* Exponential backoff reconnection loop with jitter.
|
|
354
464
|
*/
|
|
@@ -394,6 +504,7 @@ export class JsonRpcSocket {
|
|
|
394
504
|
this._isConnected = true;
|
|
395
505
|
this.reconnecting = false;
|
|
396
506
|
this.wireSocket(newSocket);
|
|
507
|
+
this.startHeartbeat();
|
|
397
508
|
this.options.onreconnected?.();
|
|
398
509
|
} catch {
|
|
399
510
|
// Connection failed — retry.
|