@livedigital/client 3.44.2 → 3.44.4
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/engine/network/index.d.ts +3 -2
- package/dist/index.es.js +2 -2
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/src/engine/index.ts +7 -17
- package/src/engine/network/index.ts +33 -9
package/package.json
CHANGED
package/src/engine/index.ts
CHANGED
|
@@ -76,7 +76,7 @@ class Engine {
|
|
|
76
76
|
private readonly mark = randomString();
|
|
77
77
|
|
|
78
78
|
private readonly handleSignalingError = (error: Error): void => {
|
|
79
|
-
if (this.isReleasing) {
|
|
79
|
+
if (this.isReleasing || !this.isChannelJoined || this.state.isChannelJoining) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -135,7 +135,6 @@ class Engine {
|
|
|
135
135
|
const [sendTransport, recvTransport] = await Promise.all([
|
|
136
136
|
this.network.createSendTransport(this.media.mediasoupDevice),
|
|
137
137
|
this.network.createRecvTransport(this.media.mediasoupDevice),
|
|
138
|
-
// @INFO: un-comment to enable signaling tcp transport connection
|
|
139
138
|
this.network.createSignalingTransport(this.media.mediasoupDevice),
|
|
140
139
|
]);
|
|
141
140
|
|
|
@@ -160,9 +159,8 @@ class Engine {
|
|
|
160
159
|
recvTransportId: this.network.receiveTransport?.id,
|
|
161
160
|
});
|
|
162
161
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
await this.network.createSignalingConsumer();
|
|
162
|
+
await this.network.createHeartbeatProducer();
|
|
163
|
+
await this.network.createKeepAliveConsumer();
|
|
166
164
|
} catch (error: unknown) {
|
|
167
165
|
this.#logger.error('initialize()', { error });
|
|
168
166
|
|
|
@@ -194,6 +192,7 @@ class Engine {
|
|
|
194
192
|
this.state.reset();
|
|
195
193
|
this.myPeer.delete();
|
|
196
194
|
this.webRtcIssueDetector?.stopWatchingNewPeerConnections();
|
|
195
|
+
|
|
197
196
|
await this.peers.reset();
|
|
198
197
|
|
|
199
198
|
this.network.closeSendTransport();
|
|
@@ -212,18 +211,8 @@ class Engine {
|
|
|
212
211
|
|
|
213
212
|
this.removeClientEventEmitterListeners();
|
|
214
213
|
|
|
215
|
-
if (this.isChannelJoined) {
|
|
216
|
-
try {
|
|
217
|
-
await this.signalingApiClient.peers.disconnectPeer();
|
|
218
|
-
} catch (error: unknown) {
|
|
219
|
-
this.#logger.debug('failed to disconnect peer', {
|
|
220
|
-
peerId: this.myPeerId,
|
|
221
|
-
error: serializeError(error),
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
214
|
this.network.reset();
|
|
215
|
+
await this.signalingApiClient.peers.disconnectPeer();
|
|
227
216
|
clientMetaProvider.clear();
|
|
228
217
|
this.transportsStatsProvider.clear();
|
|
229
218
|
this.statsHandler.clear();
|
|
@@ -232,6 +221,7 @@ class Engine {
|
|
|
232
221
|
});
|
|
233
222
|
} catch (error: unknown) {
|
|
234
223
|
this.#logger.error('release()', { error });
|
|
224
|
+
throw new Error('Error release engine');
|
|
235
225
|
} finally {
|
|
236
226
|
this.isReleasing = false;
|
|
237
227
|
}
|
|
@@ -675,7 +665,7 @@ class Engine {
|
|
|
675
665
|
}
|
|
676
666
|
|
|
677
667
|
private triggerRejoinEventIfAppropriate(reason?: string): void {
|
|
678
|
-
if (this.
|
|
668
|
+
if (!this.isChannelJoined || this.isReleasing || this.state.isChannelJoining || this.rejoinRequested) {
|
|
679
669
|
return;
|
|
680
670
|
}
|
|
681
671
|
|
|
@@ -62,7 +62,7 @@ class Network {
|
|
|
62
62
|
|
|
63
63
|
public receiveTransport?: Transport;
|
|
64
64
|
|
|
65
|
-
public
|
|
65
|
+
public heartbeatDataProducer?: types.DataProducer;
|
|
66
66
|
|
|
67
67
|
public signalingTransport?: Transport;
|
|
68
68
|
|
|
@@ -132,7 +132,7 @@ class Network {
|
|
|
132
132
|
|
|
133
133
|
public reset(): void {
|
|
134
134
|
this.signalingHeartbeater.dispose();
|
|
135
|
-
this.
|
|
135
|
+
this.heartbeatDataProducer = undefined;
|
|
136
136
|
this.stopRestartIceAttempts();
|
|
137
137
|
this.removeEventListeners();
|
|
138
138
|
}
|
|
@@ -333,12 +333,12 @@ class Network {
|
|
|
333
333
|
};
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
-
async
|
|
337
|
-
const transport = this.
|
|
336
|
+
async createHeartbeatProducer(): Promise<void> {
|
|
337
|
+
const transport = this.sendTransport;
|
|
338
338
|
|
|
339
339
|
if (!transport) {
|
|
340
|
-
this.#logger.error('
|
|
341
|
-
throw new Error('Failed to create data
|
|
340
|
+
this.#logger.error('createHeartbeatProducer()', { reason: 'missing send transport' });
|
|
341
|
+
throw new Error('Failed to create data producer');
|
|
342
342
|
}
|
|
343
343
|
|
|
344
344
|
const dataProducer = await transport.produceData({
|
|
@@ -346,17 +346,41 @@ class Network {
|
|
|
346
346
|
protocol: 'heartbeat',
|
|
347
347
|
});
|
|
348
348
|
|
|
349
|
-
this.
|
|
349
|
+
this.heartbeatDataProducer = dataProducer;
|
|
350
350
|
|
|
351
351
|
dataProducer.once('transportclose', () => {
|
|
352
|
-
this.
|
|
353
|
-
this.
|
|
352
|
+
this.heartbeatDataProducer?.close();
|
|
353
|
+
this.heartbeatDataProducer = undefined;
|
|
354
354
|
this.signalingHeartbeater.dispose();
|
|
355
355
|
});
|
|
356
356
|
|
|
357
357
|
this.signalingHeartbeater.init(transport, dataProducer);
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
+
// only for tcp transport connection
|
|
361
|
+
async createKeepAliveConsumer(): Promise<void> {
|
|
362
|
+
const transport = this.signalingTransport;
|
|
363
|
+
|
|
364
|
+
if (!transport) {
|
|
365
|
+
this.#logger.error('createKeepAliveConsumer()', { reason: 'missing signaling transport' });
|
|
366
|
+
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
const dataProducer = await transport.produceData({
|
|
371
|
+
label: 'consumers-scores',
|
|
372
|
+
protocol: 'keepalive',
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
dataProducer.once('open', () => {
|
|
376
|
+
dataProducer.send(new Uint8Array(0));
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
dataProducer.once('transportclose', () => {
|
|
380
|
+
dataProducer.close();
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
|
|
360
384
|
get channelMessagesDataConsumer(): types.DataConsumer | undefined {
|
|
361
385
|
return this.dataChannelsManager.channelMessagesDataConsumer;
|
|
362
386
|
}
|