@dxos/messaging 0.3.0 → 0.3.1-main.5e68e9d
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/dist/lib/browser/index.mjs +119 -99
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +117 -97
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/messenger.d.ts +0 -4
- package/dist/types/src/messenger.d.ts.map +1 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts +3 -0
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/messenger.ts +1 -34
- package/src/signal-manager/websocket-signal-manager.ts +45 -7
|
@@ -13,11 +13,9 @@ import { ComplexMap, ComplexSet } from "@dxos/util";
|
|
|
13
13
|
var MESSAGE_TIMEOUT = 1e4;
|
|
14
14
|
|
|
15
15
|
// packages/core/mesh/messaging/src/messenger.ts
|
|
16
|
-
var __dxlog_file = "/
|
|
16
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/messenger.ts";
|
|
17
17
|
var ReliablePayload = schema.getCodecForType("dxos.mesh.messaging.ReliablePayload");
|
|
18
18
|
var Acknowledgement = schema.getCodecForType("dxos.mesh.messaging.Acknowledgement");
|
|
19
|
-
var ERROR_LIMIT = 5;
|
|
20
|
-
var NETWORK_REBOOT_DELAY = 3e3;
|
|
21
19
|
var RECEIVED_MESSAGES_GC_INTERVAL = 12e4;
|
|
22
20
|
var Messenger = class {
|
|
23
21
|
constructor({ signalManager, retryDelay = 300 }) {
|
|
@@ -32,8 +30,6 @@ var Messenger = class {
|
|
|
32
30
|
*/
|
|
33
31
|
this._toClear = new ComplexSet(PublicKey.hash);
|
|
34
32
|
this._closed = true;
|
|
35
|
-
this._errorCount = 0;
|
|
36
|
-
this._rebooting = false;
|
|
37
33
|
this._signalManager = signalManager;
|
|
38
34
|
this._retryDelay = retryDelay;
|
|
39
35
|
this.open();
|
|
@@ -47,14 +43,14 @@ var Messenger = class {
|
|
|
47
43
|
id: traceId
|
|
48
44
|
}), {
|
|
49
45
|
F: __dxlog_file,
|
|
50
|
-
L:
|
|
46
|
+
L: 69,
|
|
51
47
|
S: this,
|
|
52
48
|
C: (f, a) => f(...a)
|
|
53
49
|
});
|
|
54
50
|
this._ctx = new Context({
|
|
55
51
|
onError: (err) => log.catch(err, void 0, {
|
|
56
52
|
F: __dxlog_file,
|
|
57
|
-
L:
|
|
53
|
+
L: 71,
|
|
58
54
|
S: this,
|
|
59
55
|
C: (f, a) => f(...a)
|
|
60
56
|
})
|
|
@@ -64,7 +60,7 @@ var Messenger = class {
|
|
|
64
60
|
from: message.author
|
|
65
61
|
}, {
|
|
66
62
|
F: __dxlog_file,
|
|
67
|
-
L:
|
|
63
|
+
L: 75,
|
|
68
64
|
S: this,
|
|
69
65
|
C: (f, a) => f(...a)
|
|
70
66
|
});
|
|
@@ -78,7 +74,7 @@ var Messenger = class {
|
|
|
78
74
|
id: traceId
|
|
79
75
|
}), {
|
|
80
76
|
F: __dxlog_file,
|
|
81
|
-
L:
|
|
77
|
+
L: 90,
|
|
82
78
|
S: this,
|
|
83
79
|
C: (f, a) => f(...a)
|
|
84
80
|
});
|
|
@@ -93,7 +89,7 @@ var Messenger = class {
|
|
|
93
89
|
async sendMessage({ author, recipient, payload }) {
|
|
94
90
|
invariant(!this._closed, "Closed", {
|
|
95
91
|
F: __dxlog_file,
|
|
96
|
-
L:
|
|
92
|
+
L: 102,
|
|
97
93
|
S: this,
|
|
98
94
|
A: [
|
|
99
95
|
"!this._closed",
|
|
@@ -107,7 +103,7 @@ var Messenger = class {
|
|
|
107
103
|
};
|
|
108
104
|
invariant(!this._onAckCallbacks.has(reliablePayload.messageId), void 0, {
|
|
109
105
|
F: __dxlog_file,
|
|
110
|
-
L:
|
|
106
|
+
L: 109,
|
|
111
107
|
S: this,
|
|
112
108
|
A: [
|
|
113
109
|
"!this._onAckCallbacks.has(reliablePayload.messageId!)",
|
|
@@ -120,7 +116,7 @@ var Messenger = class {
|
|
|
120
116
|
recipient
|
|
121
117
|
}, {
|
|
122
118
|
F: __dxlog_file,
|
|
123
|
-
L:
|
|
119
|
+
L: 110,
|
|
124
120
|
S: this,
|
|
125
121
|
C: (f, a) => f(...a)
|
|
126
122
|
});
|
|
@@ -135,7 +131,7 @@ var Messenger = class {
|
|
|
135
131
|
messageId: reliablePayload.messageId
|
|
136
132
|
}, {
|
|
137
133
|
F: __dxlog_file,
|
|
138
|
-
L:
|
|
134
|
+
L: 124,
|
|
139
135
|
S: this,
|
|
140
136
|
C: (f, a) => f(...a)
|
|
141
137
|
});
|
|
@@ -147,22 +143,21 @@ var Messenger = class {
|
|
|
147
143
|
err
|
|
148
144
|
}, {
|
|
149
145
|
F: __dxlog_file,
|
|
150
|
-
L:
|
|
146
|
+
L: 126,
|
|
151
147
|
S: this,
|
|
152
148
|
C: (f, a) => f(...a)
|
|
153
149
|
}));
|
|
154
150
|
}, this._retryDelay);
|
|
155
|
-
scheduleTask(messageContext,
|
|
151
|
+
scheduleTask(messageContext, () => {
|
|
156
152
|
log("message not delivered", {
|
|
157
153
|
messageId: reliablePayload.messageId
|
|
158
154
|
}, {
|
|
159
155
|
F: __dxlog_file,
|
|
160
|
-
L:
|
|
156
|
+
L: 135,
|
|
161
157
|
S: this,
|
|
162
158
|
C: (f, a) => f(...a)
|
|
163
159
|
});
|
|
164
160
|
this._onAckCallbacks.delete(reliablePayload.messageId);
|
|
165
|
-
await this.errorLimitCheck();
|
|
166
161
|
timeoutHit(new ProtocolTimeoutError("signaling message not delivered", new TimeoutError(MESSAGE_TIMEOUT, "Message not delivered")));
|
|
167
162
|
void messageContext.dispose();
|
|
168
163
|
}, MESSAGE_TIMEOUT);
|
|
@@ -178,54 +173,6 @@ var Messenger = class {
|
|
|
178
173
|
});
|
|
179
174
|
return promise;
|
|
180
175
|
}
|
|
181
|
-
async errorLimitCheck() {
|
|
182
|
-
log(`checking error limit ${this._errorCount}`, void 0, {
|
|
183
|
-
F: __dxlog_file,
|
|
184
|
-
L: 165,
|
|
185
|
-
S: this,
|
|
186
|
-
C: (f, a) => f(...a)
|
|
187
|
-
});
|
|
188
|
-
if (this._errorCount++ > ERROR_LIMIT) {
|
|
189
|
-
await this.rebootNetwork();
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
async rebootNetwork() {
|
|
193
|
-
if (this._rebooting) {
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
this._rebooting = true;
|
|
197
|
-
log("rebooting Messenger/SignalManager", void 0, {
|
|
198
|
-
F: __dxlog_file,
|
|
199
|
-
L: 177,
|
|
200
|
-
S: this,
|
|
201
|
-
C: (f, a) => f(...a)
|
|
202
|
-
});
|
|
203
|
-
await this.close();
|
|
204
|
-
await this._signalManager.close();
|
|
205
|
-
log("pausing", void 0, {
|
|
206
|
-
F: __dxlog_file,
|
|
207
|
-
L: 180,
|
|
208
|
-
S: this,
|
|
209
|
-
C: (f, a) => f(...a)
|
|
210
|
-
});
|
|
211
|
-
await new Promise((resolve) => setTimeout(resolve, NETWORK_REBOOT_DELAY));
|
|
212
|
-
log("done pausing", void 0, {
|
|
213
|
-
F: __dxlog_file,
|
|
214
|
-
L: 182,
|
|
215
|
-
S: this,
|
|
216
|
-
C: (f, a) => f(...a)
|
|
217
|
-
});
|
|
218
|
-
await this.open();
|
|
219
|
-
await this._signalManager.open();
|
|
220
|
-
log("done rebooting", void 0, {
|
|
221
|
-
F: __dxlog_file,
|
|
222
|
-
L: 185,
|
|
223
|
-
S: this,
|
|
224
|
-
C: (f, a) => f(...a)
|
|
225
|
-
});
|
|
226
|
-
this._errorCount = 0;
|
|
227
|
-
this._rebooting = false;
|
|
228
|
-
}
|
|
229
176
|
/**
|
|
230
177
|
* Subscribes onMessage function to messages that contains payload with payloadType.
|
|
231
178
|
* @param payloadType if not specified, onMessage will be subscribed to all types of messages.
|
|
@@ -233,7 +180,7 @@ var Messenger = class {
|
|
|
233
180
|
async listen({ peerId, payloadType, onMessage }) {
|
|
234
181
|
invariant(!this._closed, "Closed", {
|
|
235
182
|
F: __dxlog_file,
|
|
236
|
-
L:
|
|
183
|
+
L: 171,
|
|
237
184
|
S: this,
|
|
238
185
|
A: [
|
|
239
186
|
"!this._closed",
|
|
@@ -297,7 +244,7 @@ var Messenger = class {
|
|
|
297
244
|
async _handleReliablePayload({ author, recipient, payload }) {
|
|
298
245
|
invariant(payload.type_url === "dxos.mesh.messaging.ReliablePayload", void 0, {
|
|
299
246
|
F: __dxlog_file,
|
|
300
|
-
L:
|
|
247
|
+
L: 232,
|
|
301
248
|
S: this,
|
|
302
249
|
A: [
|
|
303
250
|
"payload.type_url === 'dxos.mesh.messaging.ReliablePayload'",
|
|
@@ -311,7 +258,7 @@ var Messenger = class {
|
|
|
311
258
|
messageId: reliablePayload.messageId
|
|
312
259
|
}, {
|
|
313
260
|
F: __dxlog_file,
|
|
314
|
-
L:
|
|
261
|
+
L: 235,
|
|
315
262
|
S: this,
|
|
316
263
|
C: (f, a) => f(...a)
|
|
317
264
|
});
|
|
@@ -333,7 +280,7 @@ var Messenger = class {
|
|
|
333
280
|
async _handleAcknowledgement({ payload }) {
|
|
334
281
|
invariant(payload.type_url === "dxos.mesh.messaging.Acknowledgement", void 0, {
|
|
335
282
|
F: __dxlog_file,
|
|
336
|
-
L:
|
|
283
|
+
L: 257,
|
|
337
284
|
S: this,
|
|
338
285
|
A: [
|
|
339
286
|
"payload.type_url === 'dxos.mesh.messaging.Acknowledgement'",
|
|
@@ -349,7 +296,7 @@ var Messenger = class {
|
|
|
349
296
|
to: author
|
|
350
297
|
}, {
|
|
351
298
|
F: __dxlog_file,
|
|
352
|
-
L:
|
|
299
|
+
L: 270,
|
|
353
300
|
S: this,
|
|
354
301
|
C: (f, a) => f(...a)
|
|
355
302
|
});
|
|
@@ -400,7 +347,7 @@ var Messenger = class {
|
|
|
400
347
|
elapsed
|
|
401
348
|
}, {
|
|
402
349
|
F: __dxlog_file,
|
|
403
|
-
L:
|
|
350
|
+
L: 318,
|
|
404
351
|
S: this,
|
|
405
352
|
C: (f, a) => f(...a)
|
|
406
353
|
});
|
|
@@ -426,7 +373,7 @@ import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
|
426
373
|
import { log as log2 } from "@dxos/log";
|
|
427
374
|
import { schema as schema2, trace as trace2 } from "@dxos/protocols";
|
|
428
375
|
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
429
|
-
var __dxlog_file2 = "/
|
|
376
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts";
|
|
430
377
|
var SignalRPCClient = class {
|
|
431
378
|
constructor({ url, callbacks = {} }) {
|
|
432
379
|
this._connectTrigger = new Trigger();
|
|
@@ -661,7 +608,7 @@ var SignalRPCClient = class {
|
|
|
661
608
|
};
|
|
662
609
|
|
|
663
610
|
// packages/core/mesh/messaging/src/signal-client/signal-client.ts
|
|
664
|
-
var __dxlog_file3 = "/
|
|
611
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-client.ts";
|
|
665
612
|
var DEFAULT_RECONNECT_TIMEOUT = 100;
|
|
666
613
|
var MAX_RECONNECT_TIMEOUT = 5e3;
|
|
667
614
|
var ERROR_RECONCILE_DELAY = 1e3;
|
|
@@ -1128,7 +1075,7 @@ import { PublicKey as PublicKey4 } from "@dxos/keys";
|
|
|
1128
1075
|
import { log as log4 } from "@dxos/log";
|
|
1129
1076
|
import { schema as schema3 } from "@dxos/protocols";
|
|
1130
1077
|
import { ComplexMap as ComplexMap3, ComplexSet as ComplexSet3 } from "@dxos/util";
|
|
1131
|
-
var __dxlog_file4 = "/
|
|
1078
|
+
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts";
|
|
1132
1079
|
var MemorySignalManagerContext = class {
|
|
1133
1080
|
constructor() {
|
|
1134
1081
|
// Swarm messages.
|
|
@@ -1384,12 +1331,12 @@ var dec = (payload) => {
|
|
|
1384
1331
|
};
|
|
1385
1332
|
|
|
1386
1333
|
// packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts
|
|
1387
|
-
import { Event as Event3, synchronized } from "@dxos/async";
|
|
1334
|
+
import { Event as Event3, sleep as sleep2, synchronized } from "@dxos/async";
|
|
1388
1335
|
import { Context as Context4 } from "@dxos/context";
|
|
1389
1336
|
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1390
1337
|
import { PublicKey as PublicKey5 } from "@dxos/keys";
|
|
1391
1338
|
import { log as log5 } from "@dxos/log";
|
|
1392
|
-
import { trace as trace4 } from "@dxos/protocols";
|
|
1339
|
+
import { RateLimitExceededError, trace as trace4 } from "@dxos/protocols";
|
|
1393
1340
|
function _ts_decorate(decorators, target, key, desc) {
|
|
1394
1341
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1395
1342
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
@@ -1400,12 +1347,15 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
1400
1347
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1401
1348
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1402
1349
|
}
|
|
1403
|
-
var __dxlog_file5 = "/
|
|
1350
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts";
|
|
1351
|
+
var MAX_SERVER_FAILURES = 5;
|
|
1352
|
+
var WSS_SIGNAL_SERVER_REBOOT_DELAY = 3e3;
|
|
1404
1353
|
var WebsocketSignalManager = class {
|
|
1405
1354
|
constructor(_hosts) {
|
|
1406
1355
|
this._hosts = _hosts;
|
|
1407
1356
|
this._servers = /* @__PURE__ */ new Map();
|
|
1408
1357
|
this._opened = false;
|
|
1358
|
+
this.failureCount = /* @__PURE__ */ new Map();
|
|
1409
1359
|
this.statusChanged = new Event3();
|
|
1410
1360
|
this.commandTrace = new Event3();
|
|
1411
1361
|
this.swarmEvent = new Event3();
|
|
@@ -1415,7 +1365,7 @@ var WebsocketSignalManager = class {
|
|
|
1415
1365
|
hosts: this._hosts
|
|
1416
1366
|
}, {
|
|
1417
1367
|
F: __dxlog_file5,
|
|
1418
|
-
L:
|
|
1368
|
+
L: 46,
|
|
1419
1369
|
S: this,
|
|
1420
1370
|
C: (f, a) => f(...a)
|
|
1421
1371
|
});
|
|
@@ -1426,6 +1376,7 @@ var WebsocketSignalManager = class {
|
|
|
1426
1376
|
const server = new SignalClient(host.server, async (message) => this.onMessage.emit(message), async (data) => this.swarmEvent.emit(data));
|
|
1427
1377
|
server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));
|
|
1428
1378
|
this._servers.set(host.server, server);
|
|
1379
|
+
this.failureCount.set(host.server, 0);
|
|
1429
1380
|
server.commandTrace.on((trace5) => this.commandTrace.emit(trace5));
|
|
1430
1381
|
}
|
|
1431
1382
|
}
|
|
@@ -1437,7 +1388,7 @@ var WebsocketSignalManager = class {
|
|
|
1437
1388
|
hosts: this._hosts
|
|
1438
1389
|
}, {
|
|
1439
1390
|
F: __dxlog_file5,
|
|
1440
|
-
L:
|
|
1391
|
+
L: 69,
|
|
1441
1392
|
S: this,
|
|
1442
1393
|
C: (f, a) => f(...a)
|
|
1443
1394
|
});
|
|
@@ -1445,7 +1396,7 @@ var WebsocketSignalManager = class {
|
|
|
1445
1396
|
id: this._instanceId
|
|
1446
1397
|
}), {
|
|
1447
1398
|
F: __dxlog_file5,
|
|
1448
|
-
L:
|
|
1399
|
+
L: 70,
|
|
1449
1400
|
S: this,
|
|
1450
1401
|
C: (f, a) => f(...a)
|
|
1451
1402
|
});
|
|
@@ -1458,7 +1409,7 @@ var WebsocketSignalManager = class {
|
|
|
1458
1409
|
id: this._instanceId
|
|
1459
1410
|
}), {
|
|
1460
1411
|
F: __dxlog_file5,
|
|
1461
|
-
L:
|
|
1412
|
+
L: 77,
|
|
1462
1413
|
S: this,
|
|
1463
1414
|
C: (f, a) => f(...a)
|
|
1464
1415
|
});
|
|
@@ -1471,6 +1422,38 @@ var WebsocketSignalManager = class {
|
|
|
1471
1422
|
await this._ctx.dispose();
|
|
1472
1423
|
await Promise.all(Array.from(this._servers.values()).map((server) => server.close()));
|
|
1473
1424
|
}
|
|
1425
|
+
async restartServer(serverName) {
|
|
1426
|
+
log5("Restarting server", {
|
|
1427
|
+
serverName
|
|
1428
|
+
}, {
|
|
1429
|
+
F: __dxlog_file5,
|
|
1430
|
+
L: 93,
|
|
1431
|
+
S: this,
|
|
1432
|
+
C: (f, a) => f(...a)
|
|
1433
|
+
});
|
|
1434
|
+
invariant5(this._opened, "server already closed", {
|
|
1435
|
+
F: __dxlog_file5,
|
|
1436
|
+
L: 94,
|
|
1437
|
+
S: this,
|
|
1438
|
+
A: [
|
|
1439
|
+
"this._opened",
|
|
1440
|
+
"'server already closed'"
|
|
1441
|
+
]
|
|
1442
|
+
});
|
|
1443
|
+
const server = this._servers.get(serverName);
|
|
1444
|
+
invariant5(server, "server not found", {
|
|
1445
|
+
F: __dxlog_file5,
|
|
1446
|
+
L: 97,
|
|
1447
|
+
S: this,
|
|
1448
|
+
A: [
|
|
1449
|
+
"server",
|
|
1450
|
+
"'server not found'"
|
|
1451
|
+
]
|
|
1452
|
+
});
|
|
1453
|
+
await server.close();
|
|
1454
|
+
await sleep2(WSS_SIGNAL_SERVER_REBOOT_DELAY);
|
|
1455
|
+
await server.open();
|
|
1456
|
+
}
|
|
1474
1457
|
getStatus() {
|
|
1475
1458
|
return Array.from(this._servers.values()).map((server) => server.getStatus());
|
|
1476
1459
|
}
|
|
@@ -1480,13 +1463,13 @@ var WebsocketSignalManager = class {
|
|
|
1480
1463
|
peerId
|
|
1481
1464
|
}, {
|
|
1482
1465
|
F: __dxlog_file5,
|
|
1483
|
-
L:
|
|
1466
|
+
L: 110,
|
|
1484
1467
|
S: this,
|
|
1485
1468
|
C: (f, a) => f(...a)
|
|
1486
1469
|
});
|
|
1487
1470
|
invariant5(this._opened, "Closed", {
|
|
1488
1471
|
F: __dxlog_file5,
|
|
1489
|
-
L:
|
|
1472
|
+
L: 111,
|
|
1490
1473
|
S: this,
|
|
1491
1474
|
A: [
|
|
1492
1475
|
"this._opened",
|
|
@@ -1504,13 +1487,13 @@ var WebsocketSignalManager = class {
|
|
|
1504
1487
|
peerId
|
|
1505
1488
|
}, {
|
|
1506
1489
|
F: __dxlog_file5,
|
|
1507
|
-
L:
|
|
1490
|
+
L: 117,
|
|
1508
1491
|
S: this,
|
|
1509
1492
|
C: (f, a) => f(...a)
|
|
1510
1493
|
});
|
|
1511
1494
|
invariant5(this._opened, "Closed", {
|
|
1512
1495
|
F: __dxlog_file5,
|
|
1513
|
-
L:
|
|
1496
|
+
L: 118,
|
|
1514
1497
|
S: this,
|
|
1515
1498
|
A: [
|
|
1516
1499
|
"this._opened",
|
|
@@ -1523,44 +1506,75 @@ var WebsocketSignalManager = class {
|
|
|
1523
1506
|
}));
|
|
1524
1507
|
}
|
|
1525
1508
|
async sendMessage({ author, recipient, payload }) {
|
|
1526
|
-
log5(`Signal ${recipient}`, void 0, {
|
|
1509
|
+
log5(`Signal ${recipient.truncate()}`, void 0, {
|
|
1527
1510
|
F: __dxlog_file5,
|
|
1528
|
-
L:
|
|
1511
|
+
L: 132,
|
|
1529
1512
|
S: this,
|
|
1530
1513
|
C: (f, a) => f(...a)
|
|
1531
1514
|
});
|
|
1532
1515
|
invariant5(this._opened, "Closed", {
|
|
1533
1516
|
F: __dxlog_file5,
|
|
1534
|
-
L:
|
|
1517
|
+
L: 133,
|
|
1535
1518
|
S: this,
|
|
1536
1519
|
A: [
|
|
1537
1520
|
"this._opened",
|
|
1538
1521
|
"'Closed'"
|
|
1539
1522
|
]
|
|
1540
1523
|
});
|
|
1541
|
-
void this._forEachServer(async (server) => {
|
|
1524
|
+
void this._forEachServer(async (server, serverName) => {
|
|
1542
1525
|
void server.sendMessage({
|
|
1543
1526
|
author,
|
|
1544
1527
|
recipient,
|
|
1545
1528
|
payload
|
|
1546
|
-
}).catch((err) =>
|
|
1529
|
+
}).catch((err) => {
|
|
1530
|
+
if (err instanceof RateLimitExceededError) {
|
|
1531
|
+
log5("WSS rate limit exceeded", {
|
|
1532
|
+
err
|
|
1533
|
+
}, {
|
|
1534
|
+
F: __dxlog_file5,
|
|
1535
|
+
L: 138,
|
|
1536
|
+
S: this,
|
|
1537
|
+
C: (f, a) => f(...a)
|
|
1538
|
+
});
|
|
1539
|
+
} else {
|
|
1540
|
+
log5(`error sending to ${serverName}`, {
|
|
1541
|
+
err
|
|
1542
|
+
}, {
|
|
1543
|
+
F: __dxlog_file5,
|
|
1544
|
+
L: 140,
|
|
1545
|
+
S: this,
|
|
1546
|
+
C: (f, a) => f(...a)
|
|
1547
|
+
});
|
|
1548
|
+
void this.checkServerFailure(serverName);
|
|
1549
|
+
}
|
|
1550
|
+
});
|
|
1551
|
+
});
|
|
1552
|
+
}
|
|
1553
|
+
async checkServerFailure(serverName) {
|
|
1554
|
+
const failureCount = this.failureCount.get(serverName) ?? 0;
|
|
1555
|
+
if (failureCount > MAX_SERVER_FAILURES) {
|
|
1556
|
+
log5.warn(`Too many failures sending to ${serverName} (${failureCount} > ${MAX_SERVER_FAILURES}), restarting`, void 0, {
|
|
1547
1557
|
F: __dxlog_file5,
|
|
1548
|
-
L:
|
|
1558
|
+
L: 151,
|
|
1549
1559
|
S: this,
|
|
1550
1560
|
C: (f, a) => f(...a)
|
|
1551
|
-
})
|
|
1552
|
-
|
|
1561
|
+
});
|
|
1562
|
+
await this.restartServer(serverName);
|
|
1563
|
+
this.failureCount.set(serverName, 0);
|
|
1564
|
+
return;
|
|
1565
|
+
}
|
|
1566
|
+
this.failureCount.set(serverName, (this.failureCount.get(serverName) ?? 0) + 1);
|
|
1553
1567
|
}
|
|
1554
1568
|
async subscribeMessages(peerId) {
|
|
1555
1569
|
log5(`Subscribed for message stream peerId=${peerId}`, void 0, {
|
|
1556
1570
|
F: __dxlog_file5,
|
|
1557
|
-
L:
|
|
1571
|
+
L: 160,
|
|
1558
1572
|
S: this,
|
|
1559
1573
|
C: (f, a) => f(...a)
|
|
1560
1574
|
});
|
|
1561
1575
|
invariant5(this._opened, "Closed", {
|
|
1562
1576
|
F: __dxlog_file5,
|
|
1563
|
-
L:
|
|
1577
|
+
L: 161,
|
|
1564
1578
|
S: this,
|
|
1565
1579
|
A: [
|
|
1566
1580
|
"this._opened",
|
|
@@ -1572,13 +1586,13 @@ var WebsocketSignalManager = class {
|
|
|
1572
1586
|
async unsubscribeMessages(peerId) {
|
|
1573
1587
|
log5(`Subscribed for message stream peerId=${peerId}`, void 0, {
|
|
1574
1588
|
F: __dxlog_file5,
|
|
1575
|
-
L:
|
|
1589
|
+
L: 167,
|
|
1576
1590
|
S: this,
|
|
1577
1591
|
C: (f, a) => f(...a)
|
|
1578
1592
|
});
|
|
1579
1593
|
invariant5(this._opened, "Closed", {
|
|
1580
1594
|
F: __dxlog_file5,
|
|
1581
|
-
L:
|
|
1595
|
+
L: 168,
|
|
1582
1596
|
S: this,
|
|
1583
1597
|
A: [
|
|
1584
1598
|
"this._opened",
|
|
@@ -1591,25 +1605,31 @@ var WebsocketSignalManager = class {
|
|
|
1591
1605
|
this._ctx = new Context4({
|
|
1592
1606
|
onError: (err) => log5.catch(err, void 0, {
|
|
1593
1607
|
F: __dxlog_file5,
|
|
1594
|
-
L:
|
|
1608
|
+
L: 175,
|
|
1595
1609
|
S: this,
|
|
1596
1610
|
C: (f, a) => f(...a)
|
|
1597
1611
|
})
|
|
1598
1612
|
});
|
|
1599
1613
|
}
|
|
1600
1614
|
async _forEachServer(fn) {
|
|
1601
|
-
return Promise.all(Array.from(this._servers.
|
|
1615
|
+
return Promise.all(Array.from(this._servers.entries()).map(([serverName, server]) => fn(server, serverName)));
|
|
1602
1616
|
}
|
|
1603
1617
|
};
|
|
1604
1618
|
_ts_decorate([
|
|
1605
1619
|
synchronized
|
|
1606
1620
|
], WebsocketSignalManager.prototype, "open", null);
|
|
1621
|
+
_ts_decorate([
|
|
1622
|
+
synchronized
|
|
1623
|
+
], WebsocketSignalManager.prototype, "close", null);
|
|
1607
1624
|
_ts_decorate([
|
|
1608
1625
|
synchronized
|
|
1609
1626
|
], WebsocketSignalManager.prototype, "join", null);
|
|
1610
1627
|
_ts_decorate([
|
|
1611
1628
|
synchronized
|
|
1612
1629
|
], WebsocketSignalManager.prototype, "leave", null);
|
|
1630
|
+
_ts_decorate([
|
|
1631
|
+
synchronized
|
|
1632
|
+
], WebsocketSignalManager.prototype, "checkServerFailure", null);
|
|
1613
1633
|
export {
|
|
1614
1634
|
MemorySignalManager,
|
|
1615
1635
|
MemorySignalManagerContext,
|