@whereby.com/media 1.10.0 → 1.11.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/dist/index.cjs +44 -8
- package/dist/index.d.cts +13 -4
- package/dist/index.d.mts +13 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.mjs +44 -8
- package/dist/legacy-esm.js +44 -8
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -182,8 +182,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
182
182
|
ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
|
|
183
183
|
const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
|
|
184
184
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
185
|
-
|
|
186
|
-
|
|
185
|
+
let headerByteCountDiff = 0;
|
|
186
|
+
if (currentSsrcStats.headerBytesReceived) {
|
|
187
|
+
headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
|
|
188
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
189
|
+
}
|
|
187
190
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
188
191
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
189
192
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -201,8 +204,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
201
204
|
ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
|
|
202
205
|
const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
|
|
203
206
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
204
|
-
|
|
205
|
-
|
|
207
|
+
let headerByteCountDiff = 0;
|
|
208
|
+
if (currentSsrcStats.headerBytesSent) {
|
|
209
|
+
headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
|
|
210
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
211
|
+
}
|
|
206
212
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
207
213
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
208
214
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -451,7 +457,7 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
451
457
|
pcData.previousSSRCs = pcData.currentSSRCs || {};
|
|
452
458
|
pcData.currentSSRCs = {};
|
|
453
459
|
report.forEach((currentRtcStats) => {
|
|
454
|
-
var _a, _b;
|
|
460
|
+
var _a, _b, _c;
|
|
455
461
|
if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
|
|
456
462
|
const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
|
|
457
463
|
const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
|
|
@@ -477,6 +483,13 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
477
483
|
}
|
|
478
484
|
}
|
|
479
485
|
const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
|
|
486
|
+
if (!currentRtcStats.trackIdentifier &&
|
|
487
|
+
pcData.ssrcToTrackId[ssrc] &&
|
|
488
|
+
((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
|
|
489
|
+
client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
|
|
490
|
+
trackId = client[kind].track.id;
|
|
491
|
+
pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
|
|
492
|
+
}
|
|
480
493
|
pcData.currentSSRCs[ssrc] = client.id;
|
|
481
494
|
if (prevRtcStats) {
|
|
482
495
|
const newTransport = report.get(currentRtcStats.transportId);
|
|
@@ -1408,6 +1421,10 @@ class VegaConnection extends EventEmitter.EventEmitter {
|
|
|
1408
1421
|
var _a;
|
|
1409
1422
|
(_a = this.socket) === null || _a === void 0 ? void 0 : _a.close();
|
|
1410
1423
|
}
|
|
1424
|
+
isConnected() {
|
|
1425
|
+
var _a, _b;
|
|
1426
|
+
return ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN || ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.readyState) === WebSocket.CONNECTING;
|
|
1427
|
+
}
|
|
1411
1428
|
_onOpen() {
|
|
1412
1429
|
logger$9.info("Connected");
|
|
1413
1430
|
this.emit("open");
|
|
@@ -5087,6 +5104,9 @@ class VegaRtcManager {
|
|
|
5087
5104
|
}), this._serverSocket.on(PROTOCOL_RESPONSES.ROOM_JOINED, () => {
|
|
5088
5105
|
if (this._screenVideoTrack)
|
|
5089
5106
|
this._emitScreenshareStarted();
|
|
5107
|
+
if (!this._vegaConnection.isConnected() && this._reconnect) {
|
|
5108
|
+
this._connect();
|
|
5109
|
+
}
|
|
5090
5110
|
}));
|
|
5091
5111
|
this._connect();
|
|
5092
5112
|
}
|
|
@@ -5097,6 +5117,13 @@ class VegaRtcManager {
|
|
|
5097
5117
|
});
|
|
5098
5118
|
}
|
|
5099
5119
|
_connect() {
|
|
5120
|
+
if (!this._serverSocket.isConnected()) {
|
|
5121
|
+
const reconnectThresholdInMs = this._serverSocket.getReconnectThreshold();
|
|
5122
|
+
if (!reconnectThresholdInMs)
|
|
5123
|
+
return;
|
|
5124
|
+
if (Date.now() > (this._serverSocket.disconnectTimestamp || 0) + reconnectThresholdInMs)
|
|
5125
|
+
return;
|
|
5126
|
+
}
|
|
5100
5127
|
const host = this._features.sfuServerOverrideHost || [this._sfuServer.url];
|
|
5101
5128
|
const searchParams = new URLSearchParams(Object.assign({ clientId: this._selfId, organizationId: this._room.organizationId, roomName: this._room.name, eventClaim: this._room.isClaimed ? this._eventClaim : null, lowBw: "true" }, Object.keys(this._features || {})
|
|
5102
5129
|
.filter((featureKey) => this._features[featureKey] && /^sfu/.test(featureKey))
|
|
@@ -5807,7 +5834,7 @@ class VegaRtcManager {
|
|
|
5807
5834
|
if (!videoTrack.effectTrack) {
|
|
5808
5835
|
this._monitorVideoTrack(videoTrack);
|
|
5809
5836
|
}
|
|
5810
|
-
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "video");
|
|
5837
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "video");
|
|
5811
5838
|
if (beforeEffectTrack) {
|
|
5812
5839
|
this._monitorVideoTrack(beforeEffectTrack);
|
|
5813
5840
|
}
|
|
@@ -5818,7 +5845,7 @@ class VegaRtcManager {
|
|
|
5818
5845
|
if (!audioTrack.effectTrack) {
|
|
5819
5846
|
this._monitorAudioTrack(audioTrack);
|
|
5820
5847
|
}
|
|
5821
|
-
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "audio");
|
|
5848
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "audio");
|
|
5822
5849
|
if (beforeEffectTrack) {
|
|
5823
5850
|
this._monitorAudioTrack(beforeEffectTrack);
|
|
5824
5851
|
}
|
|
@@ -5889,7 +5916,9 @@ class VegaRtcManager {
|
|
|
5889
5916
|
}
|
|
5890
5917
|
if (!enable) {
|
|
5891
5918
|
clearTimeout(this._stopCameraTimeout);
|
|
5892
|
-
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
5919
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
5920
|
+
? 0
|
|
5921
|
+
: 5000;
|
|
5893
5922
|
this._stopCameraTimeout = setTimeout(() => {
|
|
5894
5923
|
localStream.getVideoTracks().forEach((track) => {
|
|
5895
5924
|
if (track.enabled === false) {
|
|
@@ -6441,6 +6470,7 @@ const logger = new Logger();
|
|
|
6441
6470
|
class ReconnectManager extends EventEmitter {
|
|
6442
6471
|
constructor(socket) {
|
|
6443
6472
|
super();
|
|
6473
|
+
this.reconnectThresholdInMs = 0;
|
|
6444
6474
|
this._socket = socket;
|
|
6445
6475
|
this._clients = {};
|
|
6446
6476
|
this._signalDisconnectTime = undefined;
|
|
@@ -6466,6 +6496,7 @@ class ReconnectManager extends EventEmitter {
|
|
|
6466
6496
|
_onRoomJoined(payload) {
|
|
6467
6497
|
var _a, _b;
|
|
6468
6498
|
return __awaiter(this, void 0, void 0, function* () {
|
|
6499
|
+
this.reconnectThresholdInMs = (payload.disconnectTimeout || 0) * 0.8 || 0;
|
|
6469
6500
|
if (!((_a = payload.room) === null || _a === void 0 ? void 0 : _a.clients)) {
|
|
6470
6501
|
this.emit(PROTOCOL_RESPONSES.ROOM_JOINED, payload);
|
|
6471
6502
|
return;
|
|
@@ -6719,6 +6750,7 @@ class ServerSocket {
|
|
|
6719
6750
|
}
|
|
6720
6751
|
});
|
|
6721
6752
|
this._socket.on("disconnect", () => {
|
|
6753
|
+
this.disconnectTimestamp = Date.now();
|
|
6722
6754
|
if (this.noopKeepaliveInterval) {
|
|
6723
6755
|
clearInterval(this.noopKeepaliveInterval);
|
|
6724
6756
|
this.noopKeepaliveInterval = null;
|
|
@@ -6802,6 +6834,10 @@ class ServerSocket {
|
|
|
6802
6834
|
var _a;
|
|
6803
6835
|
return (_a = this._reconnectManager) === null || _a === void 0 ? void 0 : _a.metrics;
|
|
6804
6836
|
}
|
|
6837
|
+
getReconnectThreshold() {
|
|
6838
|
+
var _a;
|
|
6839
|
+
return (_a = this._reconnectManager) === null || _a === void 0 ? void 0 : _a.reconnectThresholdInMs;
|
|
6840
|
+
}
|
|
6805
6841
|
}
|
|
6806
6842
|
|
|
6807
6843
|
const defaultSubdomainPattern = /^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/;
|
package/dist/index.d.cts
CHANGED
|
@@ -488,6 +488,7 @@ declare class ReconnectManager extends EventEmitter {
|
|
|
488
488
|
evaluationFailed: number;
|
|
489
489
|
roomJoined: number;
|
|
490
490
|
};
|
|
491
|
+
reconnectThresholdInMs: number;
|
|
491
492
|
constructor(socket: any);
|
|
492
493
|
_onRoomJoined(payload: any): Promise<void>;
|
|
493
494
|
_onClientLeft(payload: any): void;
|
|
@@ -516,6 +517,7 @@ declare class ServerSocket {
|
|
|
516
517
|
_reconnectManager?: ReconnectManager | null;
|
|
517
518
|
noopKeepaliveInterval: any;
|
|
518
519
|
_wasConnectedUsingWebsocket?: boolean;
|
|
520
|
+
disconnectTimestamp: number | undefined;
|
|
519
521
|
constructor(hostName: string, optionsOverrides?: any, glitchFree?: boolean);
|
|
520
522
|
setRtcManager(rtcManager?: RtcManager): void;
|
|
521
523
|
connect(): void;
|
|
@@ -525,8 +527,8 @@ declare class ServerSocket {
|
|
|
525
527
|
emitIfConnected(eventName: string, data: any): void;
|
|
526
528
|
getTransport(): any;
|
|
527
529
|
getManager(): any;
|
|
528
|
-
isConnecting():
|
|
529
|
-
isConnected():
|
|
530
|
+
isConnecting(): boolean;
|
|
531
|
+
isConnected(): boolean;
|
|
530
532
|
on(eventName: string, handler: Function): () => void;
|
|
531
533
|
once(eventName: string, handler: Function): void;
|
|
532
534
|
off(eventName: string, handler: Function): void;
|
|
@@ -537,6 +539,7 @@ declare class ServerSocket {
|
|
|
537
539
|
evaluationFailed: number;
|
|
538
540
|
roomJoined: number;
|
|
539
541
|
} | undefined;
|
|
542
|
+
getReconnectThreshold(): number | undefined;
|
|
540
543
|
}
|
|
541
544
|
|
|
542
545
|
declare const maybeTurnOnly: (transportConfig: any, features: {
|
|
@@ -692,6 +695,10 @@ interface ClientMetadataReceivedEvent {
|
|
|
692
695
|
clientId: string;
|
|
693
696
|
};
|
|
694
697
|
}
|
|
698
|
+
interface ClientUnableToJoinEvent {
|
|
699
|
+
displayName: string;
|
|
700
|
+
error: string;
|
|
701
|
+
}
|
|
695
702
|
interface AudioEnableRequestedEvent {
|
|
696
703
|
requestedByClientId: string;
|
|
697
704
|
enable: boolean;
|
|
@@ -719,6 +726,7 @@ interface SignalEvents {
|
|
|
719
726
|
client_left: ClientLeftEvent;
|
|
720
727
|
client_kicked: ClientKickedEvent;
|
|
721
728
|
client_metadata_received: ClientMetadataReceivedEvent;
|
|
729
|
+
client_unable_to_join: ClientUnableToJoinEvent;
|
|
722
730
|
cloud_recording_started: CloudRecordingStartedEvent;
|
|
723
731
|
cloud_recording_stopped: void;
|
|
724
732
|
chat_message: ChatMessage;
|
|
@@ -995,6 +1003,7 @@ declare class VegaConnection extends EventEmitter$1 {
|
|
|
995
1003
|
_setupSocket(): void;
|
|
996
1004
|
_tearDown(): void;
|
|
997
1005
|
close(): void;
|
|
1006
|
+
isConnected(): boolean;
|
|
998
1007
|
_onOpen(): void;
|
|
999
1008
|
_onMessage(event: MessageEvent): void;
|
|
1000
1009
|
_onClose(): void;
|
|
@@ -1070,7 +1079,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1070
1079
|
_room: any;
|
|
1071
1080
|
_roomSessionId: any;
|
|
1072
1081
|
_emitter: any;
|
|
1073
|
-
_serverSocket:
|
|
1082
|
+
_serverSocket: ServerSocket;
|
|
1074
1083
|
_webrtcProvider: any;
|
|
1075
1084
|
_features: any;
|
|
1076
1085
|
_eventClaim?: any;
|
|
@@ -1405,4 +1414,4 @@ declare class RtcStream {
|
|
|
1405
1414
|
static getTypeFromId(id: string): string;
|
|
1406
1415
|
}
|
|
1407
1416
|
|
|
1408
|
-
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, type LiveTranscriptionStartedEvent, type LiveTranscriptionStoppedEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
|
1417
|
+
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type ClientUnableToJoinEvent, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, type LiveTranscriptionStartedEvent, type LiveTranscriptionStoppedEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
package/dist/index.d.mts
CHANGED
|
@@ -488,6 +488,7 @@ declare class ReconnectManager extends EventEmitter {
|
|
|
488
488
|
evaluationFailed: number;
|
|
489
489
|
roomJoined: number;
|
|
490
490
|
};
|
|
491
|
+
reconnectThresholdInMs: number;
|
|
491
492
|
constructor(socket: any);
|
|
492
493
|
_onRoomJoined(payload: any): Promise<void>;
|
|
493
494
|
_onClientLeft(payload: any): void;
|
|
@@ -516,6 +517,7 @@ declare class ServerSocket {
|
|
|
516
517
|
_reconnectManager?: ReconnectManager | null;
|
|
517
518
|
noopKeepaliveInterval: any;
|
|
518
519
|
_wasConnectedUsingWebsocket?: boolean;
|
|
520
|
+
disconnectTimestamp: number | undefined;
|
|
519
521
|
constructor(hostName: string, optionsOverrides?: any, glitchFree?: boolean);
|
|
520
522
|
setRtcManager(rtcManager?: RtcManager): void;
|
|
521
523
|
connect(): void;
|
|
@@ -525,8 +527,8 @@ declare class ServerSocket {
|
|
|
525
527
|
emitIfConnected(eventName: string, data: any): void;
|
|
526
528
|
getTransport(): any;
|
|
527
529
|
getManager(): any;
|
|
528
|
-
isConnecting():
|
|
529
|
-
isConnected():
|
|
530
|
+
isConnecting(): boolean;
|
|
531
|
+
isConnected(): boolean;
|
|
530
532
|
on(eventName: string, handler: Function): () => void;
|
|
531
533
|
once(eventName: string, handler: Function): void;
|
|
532
534
|
off(eventName: string, handler: Function): void;
|
|
@@ -537,6 +539,7 @@ declare class ServerSocket {
|
|
|
537
539
|
evaluationFailed: number;
|
|
538
540
|
roomJoined: number;
|
|
539
541
|
} | undefined;
|
|
542
|
+
getReconnectThreshold(): number | undefined;
|
|
540
543
|
}
|
|
541
544
|
|
|
542
545
|
declare const maybeTurnOnly: (transportConfig: any, features: {
|
|
@@ -692,6 +695,10 @@ interface ClientMetadataReceivedEvent {
|
|
|
692
695
|
clientId: string;
|
|
693
696
|
};
|
|
694
697
|
}
|
|
698
|
+
interface ClientUnableToJoinEvent {
|
|
699
|
+
displayName: string;
|
|
700
|
+
error: string;
|
|
701
|
+
}
|
|
695
702
|
interface AudioEnableRequestedEvent {
|
|
696
703
|
requestedByClientId: string;
|
|
697
704
|
enable: boolean;
|
|
@@ -719,6 +726,7 @@ interface SignalEvents {
|
|
|
719
726
|
client_left: ClientLeftEvent;
|
|
720
727
|
client_kicked: ClientKickedEvent;
|
|
721
728
|
client_metadata_received: ClientMetadataReceivedEvent;
|
|
729
|
+
client_unable_to_join: ClientUnableToJoinEvent;
|
|
722
730
|
cloud_recording_started: CloudRecordingStartedEvent;
|
|
723
731
|
cloud_recording_stopped: void;
|
|
724
732
|
chat_message: ChatMessage;
|
|
@@ -995,6 +1003,7 @@ declare class VegaConnection extends EventEmitter$1 {
|
|
|
995
1003
|
_setupSocket(): void;
|
|
996
1004
|
_tearDown(): void;
|
|
997
1005
|
close(): void;
|
|
1006
|
+
isConnected(): boolean;
|
|
998
1007
|
_onOpen(): void;
|
|
999
1008
|
_onMessage(event: MessageEvent): void;
|
|
1000
1009
|
_onClose(): void;
|
|
@@ -1070,7 +1079,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1070
1079
|
_room: any;
|
|
1071
1080
|
_roomSessionId: any;
|
|
1072
1081
|
_emitter: any;
|
|
1073
|
-
_serverSocket:
|
|
1082
|
+
_serverSocket: ServerSocket;
|
|
1074
1083
|
_webrtcProvider: any;
|
|
1075
1084
|
_features: any;
|
|
1076
1085
|
_eventClaim?: any;
|
|
@@ -1405,4 +1414,4 @@ declare class RtcStream {
|
|
|
1405
1414
|
static getTypeFromId(id: string): string;
|
|
1406
1415
|
}
|
|
1407
1416
|
|
|
1408
|
-
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, type LiveTranscriptionStartedEvent, type LiveTranscriptionStoppedEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
|
1417
|
+
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type ClientUnableToJoinEvent, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, type LiveTranscriptionStartedEvent, type LiveTranscriptionStoppedEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
package/dist/index.d.ts
CHANGED
|
@@ -488,6 +488,7 @@ declare class ReconnectManager extends EventEmitter {
|
|
|
488
488
|
evaluationFailed: number;
|
|
489
489
|
roomJoined: number;
|
|
490
490
|
};
|
|
491
|
+
reconnectThresholdInMs: number;
|
|
491
492
|
constructor(socket: any);
|
|
492
493
|
_onRoomJoined(payload: any): Promise<void>;
|
|
493
494
|
_onClientLeft(payload: any): void;
|
|
@@ -516,6 +517,7 @@ declare class ServerSocket {
|
|
|
516
517
|
_reconnectManager?: ReconnectManager | null;
|
|
517
518
|
noopKeepaliveInterval: any;
|
|
518
519
|
_wasConnectedUsingWebsocket?: boolean;
|
|
520
|
+
disconnectTimestamp: number | undefined;
|
|
519
521
|
constructor(hostName: string, optionsOverrides?: any, glitchFree?: boolean);
|
|
520
522
|
setRtcManager(rtcManager?: RtcManager): void;
|
|
521
523
|
connect(): void;
|
|
@@ -525,8 +527,8 @@ declare class ServerSocket {
|
|
|
525
527
|
emitIfConnected(eventName: string, data: any): void;
|
|
526
528
|
getTransport(): any;
|
|
527
529
|
getManager(): any;
|
|
528
|
-
isConnecting():
|
|
529
|
-
isConnected():
|
|
530
|
+
isConnecting(): boolean;
|
|
531
|
+
isConnected(): boolean;
|
|
530
532
|
on(eventName: string, handler: Function): () => void;
|
|
531
533
|
once(eventName: string, handler: Function): void;
|
|
532
534
|
off(eventName: string, handler: Function): void;
|
|
@@ -537,6 +539,7 @@ declare class ServerSocket {
|
|
|
537
539
|
evaluationFailed: number;
|
|
538
540
|
roomJoined: number;
|
|
539
541
|
} | undefined;
|
|
542
|
+
getReconnectThreshold(): number | undefined;
|
|
540
543
|
}
|
|
541
544
|
|
|
542
545
|
declare const maybeTurnOnly: (transportConfig: any, features: {
|
|
@@ -692,6 +695,10 @@ interface ClientMetadataReceivedEvent {
|
|
|
692
695
|
clientId: string;
|
|
693
696
|
};
|
|
694
697
|
}
|
|
698
|
+
interface ClientUnableToJoinEvent {
|
|
699
|
+
displayName: string;
|
|
700
|
+
error: string;
|
|
701
|
+
}
|
|
695
702
|
interface AudioEnableRequestedEvent {
|
|
696
703
|
requestedByClientId: string;
|
|
697
704
|
enable: boolean;
|
|
@@ -719,6 +726,7 @@ interface SignalEvents {
|
|
|
719
726
|
client_left: ClientLeftEvent;
|
|
720
727
|
client_kicked: ClientKickedEvent;
|
|
721
728
|
client_metadata_received: ClientMetadataReceivedEvent;
|
|
729
|
+
client_unable_to_join: ClientUnableToJoinEvent;
|
|
722
730
|
cloud_recording_started: CloudRecordingStartedEvent;
|
|
723
731
|
cloud_recording_stopped: void;
|
|
724
732
|
chat_message: ChatMessage;
|
|
@@ -995,6 +1003,7 @@ declare class VegaConnection extends EventEmitter$1 {
|
|
|
995
1003
|
_setupSocket(): void;
|
|
996
1004
|
_tearDown(): void;
|
|
997
1005
|
close(): void;
|
|
1006
|
+
isConnected(): boolean;
|
|
998
1007
|
_onOpen(): void;
|
|
999
1008
|
_onMessage(event: MessageEvent): void;
|
|
1000
1009
|
_onClose(): void;
|
|
@@ -1070,7 +1079,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1070
1079
|
_room: any;
|
|
1071
1080
|
_roomSessionId: any;
|
|
1072
1081
|
_emitter: any;
|
|
1073
|
-
_serverSocket:
|
|
1082
|
+
_serverSocket: ServerSocket;
|
|
1074
1083
|
_webrtcProvider: any;
|
|
1075
1084
|
_features: any;
|
|
1076
1085
|
_eventClaim?: any;
|
|
@@ -1405,4 +1414,4 @@ declare class RtcStream {
|
|
|
1405
1414
|
static getTypeFromId(id: string): string;
|
|
1406
1415
|
}
|
|
1407
1416
|
|
|
1408
|
-
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, type LiveTranscriptionStartedEvent, type LiveTranscriptionStoppedEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
|
1417
|
+
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type ClientUnableToJoinEvent, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, type LiveTranscriptionStartedEvent, type LiveTranscriptionStoppedEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
package/dist/index.mjs
CHANGED
|
@@ -161,8 +161,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
161
161
|
ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
|
|
162
162
|
const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
|
|
163
163
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
let headerByteCountDiff = 0;
|
|
165
|
+
if (currentSsrcStats.headerBytesReceived) {
|
|
166
|
+
headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
|
|
167
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
168
|
+
}
|
|
166
169
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
167
170
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
168
171
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -180,8 +183,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
180
183
|
ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
|
|
181
184
|
const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
|
|
182
185
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
183
|
-
|
|
184
|
-
|
|
186
|
+
let headerByteCountDiff = 0;
|
|
187
|
+
if (currentSsrcStats.headerBytesSent) {
|
|
188
|
+
headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
|
|
189
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
190
|
+
}
|
|
185
191
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
186
192
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
187
193
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -430,7 +436,7 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
430
436
|
pcData.previousSSRCs = pcData.currentSSRCs || {};
|
|
431
437
|
pcData.currentSSRCs = {};
|
|
432
438
|
report.forEach((currentRtcStats) => {
|
|
433
|
-
var _a, _b;
|
|
439
|
+
var _a, _b, _c;
|
|
434
440
|
if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
|
|
435
441
|
const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
|
|
436
442
|
const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
|
|
@@ -456,6 +462,13 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
456
462
|
}
|
|
457
463
|
}
|
|
458
464
|
const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
|
|
465
|
+
if (!currentRtcStats.trackIdentifier &&
|
|
466
|
+
pcData.ssrcToTrackId[ssrc] &&
|
|
467
|
+
((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
|
|
468
|
+
client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
|
|
469
|
+
trackId = client[kind].track.id;
|
|
470
|
+
pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
|
|
471
|
+
}
|
|
459
472
|
pcData.currentSSRCs[ssrc] = client.id;
|
|
460
473
|
if (prevRtcStats) {
|
|
461
474
|
const newTransport = report.get(currentRtcStats.transportId);
|
|
@@ -1387,6 +1400,10 @@ class VegaConnection extends EventEmitter {
|
|
|
1387
1400
|
var _a;
|
|
1388
1401
|
(_a = this.socket) === null || _a === void 0 ? void 0 : _a.close();
|
|
1389
1402
|
}
|
|
1403
|
+
isConnected() {
|
|
1404
|
+
var _a, _b;
|
|
1405
|
+
return ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN || ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.readyState) === WebSocket.CONNECTING;
|
|
1406
|
+
}
|
|
1390
1407
|
_onOpen() {
|
|
1391
1408
|
logger$9.info("Connected");
|
|
1392
1409
|
this.emit("open");
|
|
@@ -5066,6 +5083,9 @@ class VegaRtcManager {
|
|
|
5066
5083
|
}), this._serverSocket.on(PROTOCOL_RESPONSES.ROOM_JOINED, () => {
|
|
5067
5084
|
if (this._screenVideoTrack)
|
|
5068
5085
|
this._emitScreenshareStarted();
|
|
5086
|
+
if (!this._vegaConnection.isConnected() && this._reconnect) {
|
|
5087
|
+
this._connect();
|
|
5088
|
+
}
|
|
5069
5089
|
}));
|
|
5070
5090
|
this._connect();
|
|
5071
5091
|
}
|
|
@@ -5076,6 +5096,13 @@ class VegaRtcManager {
|
|
|
5076
5096
|
});
|
|
5077
5097
|
}
|
|
5078
5098
|
_connect() {
|
|
5099
|
+
if (!this._serverSocket.isConnected()) {
|
|
5100
|
+
const reconnectThresholdInMs = this._serverSocket.getReconnectThreshold();
|
|
5101
|
+
if (!reconnectThresholdInMs)
|
|
5102
|
+
return;
|
|
5103
|
+
if (Date.now() > (this._serverSocket.disconnectTimestamp || 0) + reconnectThresholdInMs)
|
|
5104
|
+
return;
|
|
5105
|
+
}
|
|
5079
5106
|
const host = this._features.sfuServerOverrideHost || [this._sfuServer.url];
|
|
5080
5107
|
const searchParams = new URLSearchParams(Object.assign({ clientId: this._selfId, organizationId: this._room.organizationId, roomName: this._room.name, eventClaim: this._room.isClaimed ? this._eventClaim : null, lowBw: "true" }, Object.keys(this._features || {})
|
|
5081
5108
|
.filter((featureKey) => this._features[featureKey] && /^sfu/.test(featureKey))
|
|
@@ -5786,7 +5813,7 @@ class VegaRtcManager {
|
|
|
5786
5813
|
if (!videoTrack.effectTrack) {
|
|
5787
5814
|
this._monitorVideoTrack(videoTrack);
|
|
5788
5815
|
}
|
|
5789
|
-
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "video");
|
|
5816
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "video");
|
|
5790
5817
|
if (beforeEffectTrack) {
|
|
5791
5818
|
this._monitorVideoTrack(beforeEffectTrack);
|
|
5792
5819
|
}
|
|
@@ -5797,7 +5824,7 @@ class VegaRtcManager {
|
|
|
5797
5824
|
if (!audioTrack.effectTrack) {
|
|
5798
5825
|
this._monitorAudioTrack(audioTrack);
|
|
5799
5826
|
}
|
|
5800
|
-
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "audio");
|
|
5827
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "audio");
|
|
5801
5828
|
if (beforeEffectTrack) {
|
|
5802
5829
|
this._monitorAudioTrack(beforeEffectTrack);
|
|
5803
5830
|
}
|
|
@@ -5868,7 +5895,9 @@ class VegaRtcManager {
|
|
|
5868
5895
|
}
|
|
5869
5896
|
if (!enable) {
|
|
5870
5897
|
clearTimeout(this._stopCameraTimeout);
|
|
5871
|
-
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
5898
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
5899
|
+
? 0
|
|
5900
|
+
: 5000;
|
|
5872
5901
|
this._stopCameraTimeout = setTimeout(() => {
|
|
5873
5902
|
localStream.getVideoTracks().forEach((track) => {
|
|
5874
5903
|
if (track.enabled === false) {
|
|
@@ -6420,6 +6449,7 @@ const logger = new Logger();
|
|
|
6420
6449
|
class ReconnectManager extends EventEmitter$1 {
|
|
6421
6450
|
constructor(socket) {
|
|
6422
6451
|
super();
|
|
6452
|
+
this.reconnectThresholdInMs = 0;
|
|
6423
6453
|
this._socket = socket;
|
|
6424
6454
|
this._clients = {};
|
|
6425
6455
|
this._signalDisconnectTime = undefined;
|
|
@@ -6445,6 +6475,7 @@ class ReconnectManager extends EventEmitter$1 {
|
|
|
6445
6475
|
_onRoomJoined(payload) {
|
|
6446
6476
|
var _a, _b;
|
|
6447
6477
|
return __awaiter(this, void 0, void 0, function* () {
|
|
6478
|
+
this.reconnectThresholdInMs = (payload.disconnectTimeout || 0) * 0.8 || 0;
|
|
6448
6479
|
if (!((_a = payload.room) === null || _a === void 0 ? void 0 : _a.clients)) {
|
|
6449
6480
|
this.emit(PROTOCOL_RESPONSES.ROOM_JOINED, payload);
|
|
6450
6481
|
return;
|
|
@@ -6698,6 +6729,7 @@ class ServerSocket {
|
|
|
6698
6729
|
}
|
|
6699
6730
|
});
|
|
6700
6731
|
this._socket.on("disconnect", () => {
|
|
6732
|
+
this.disconnectTimestamp = Date.now();
|
|
6701
6733
|
if (this.noopKeepaliveInterval) {
|
|
6702
6734
|
clearInterval(this.noopKeepaliveInterval);
|
|
6703
6735
|
this.noopKeepaliveInterval = null;
|
|
@@ -6781,6 +6813,10 @@ class ServerSocket {
|
|
|
6781
6813
|
var _a;
|
|
6782
6814
|
return (_a = this._reconnectManager) === null || _a === void 0 ? void 0 : _a.metrics;
|
|
6783
6815
|
}
|
|
6816
|
+
getReconnectThreshold() {
|
|
6817
|
+
var _a;
|
|
6818
|
+
return (_a = this._reconnectManager) === null || _a === void 0 ? void 0 : _a.reconnectThresholdInMs;
|
|
6819
|
+
}
|
|
6784
6820
|
}
|
|
6785
6821
|
|
|
6786
6822
|
const defaultSubdomainPattern = /^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/;
|
package/dist/legacy-esm.js
CHANGED
|
@@ -161,8 +161,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
161
161
|
ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
|
|
162
162
|
const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
|
|
163
163
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
let headerByteCountDiff = 0;
|
|
165
|
+
if (currentSsrcStats.headerBytesReceived) {
|
|
166
|
+
headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
|
|
167
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
168
|
+
}
|
|
166
169
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
167
170
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
168
171
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -180,8 +183,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
180
183
|
ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
|
|
181
184
|
const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
|
|
182
185
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
183
|
-
|
|
184
|
-
|
|
186
|
+
let headerByteCountDiff = 0;
|
|
187
|
+
if (currentSsrcStats.headerBytesSent) {
|
|
188
|
+
headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
|
|
189
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
190
|
+
}
|
|
185
191
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
186
192
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
187
193
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -430,7 +436,7 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
430
436
|
pcData.previousSSRCs = pcData.currentSSRCs || {};
|
|
431
437
|
pcData.currentSSRCs = {};
|
|
432
438
|
report.forEach((currentRtcStats) => {
|
|
433
|
-
var _a, _b;
|
|
439
|
+
var _a, _b, _c;
|
|
434
440
|
if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
|
|
435
441
|
const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
|
|
436
442
|
const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
|
|
@@ -456,6 +462,13 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
456
462
|
}
|
|
457
463
|
}
|
|
458
464
|
const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
|
|
465
|
+
if (!currentRtcStats.trackIdentifier &&
|
|
466
|
+
pcData.ssrcToTrackId[ssrc] &&
|
|
467
|
+
((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
|
|
468
|
+
client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
|
|
469
|
+
trackId = client[kind].track.id;
|
|
470
|
+
pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
|
|
471
|
+
}
|
|
459
472
|
pcData.currentSSRCs[ssrc] = client.id;
|
|
460
473
|
if (prevRtcStats) {
|
|
461
474
|
const newTransport = report.get(currentRtcStats.transportId);
|
|
@@ -1387,6 +1400,10 @@ class VegaConnection extends EventEmitter {
|
|
|
1387
1400
|
var _a;
|
|
1388
1401
|
(_a = this.socket) === null || _a === void 0 ? void 0 : _a.close();
|
|
1389
1402
|
}
|
|
1403
|
+
isConnected() {
|
|
1404
|
+
var _a, _b;
|
|
1405
|
+
return ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN || ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.readyState) === WebSocket.CONNECTING;
|
|
1406
|
+
}
|
|
1390
1407
|
_onOpen() {
|
|
1391
1408
|
logger$9.info("Connected");
|
|
1392
1409
|
this.emit("open");
|
|
@@ -5066,6 +5083,9 @@ class VegaRtcManager {
|
|
|
5066
5083
|
}), this._serverSocket.on(PROTOCOL_RESPONSES.ROOM_JOINED, () => {
|
|
5067
5084
|
if (this._screenVideoTrack)
|
|
5068
5085
|
this._emitScreenshareStarted();
|
|
5086
|
+
if (!this._vegaConnection.isConnected() && this._reconnect) {
|
|
5087
|
+
this._connect();
|
|
5088
|
+
}
|
|
5069
5089
|
}));
|
|
5070
5090
|
this._connect();
|
|
5071
5091
|
}
|
|
@@ -5076,6 +5096,13 @@ class VegaRtcManager {
|
|
|
5076
5096
|
});
|
|
5077
5097
|
}
|
|
5078
5098
|
_connect() {
|
|
5099
|
+
if (!this._serverSocket.isConnected()) {
|
|
5100
|
+
const reconnectThresholdInMs = this._serverSocket.getReconnectThreshold();
|
|
5101
|
+
if (!reconnectThresholdInMs)
|
|
5102
|
+
return;
|
|
5103
|
+
if (Date.now() > (this._serverSocket.disconnectTimestamp || 0) + reconnectThresholdInMs)
|
|
5104
|
+
return;
|
|
5105
|
+
}
|
|
5079
5106
|
const host = this._features.sfuServerOverrideHost || [this._sfuServer.url];
|
|
5080
5107
|
const searchParams = new URLSearchParams(Object.assign({ clientId: this._selfId, organizationId: this._room.organizationId, roomName: this._room.name, eventClaim: this._room.isClaimed ? this._eventClaim : null, lowBw: "true" }, Object.keys(this._features || {})
|
|
5081
5108
|
.filter((featureKey) => this._features[featureKey] && /^sfu/.test(featureKey))
|
|
@@ -5786,7 +5813,7 @@ class VegaRtcManager {
|
|
|
5786
5813
|
if (!videoTrack.effectTrack) {
|
|
5787
5814
|
this._monitorVideoTrack(videoTrack);
|
|
5788
5815
|
}
|
|
5789
|
-
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "video");
|
|
5816
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "video");
|
|
5790
5817
|
if (beforeEffectTrack) {
|
|
5791
5818
|
this._monitorVideoTrack(beforeEffectTrack);
|
|
5792
5819
|
}
|
|
@@ -5797,7 +5824,7 @@ class VegaRtcManager {
|
|
|
5797
5824
|
if (!audioTrack.effectTrack) {
|
|
5798
5825
|
this._monitorAudioTrack(audioTrack);
|
|
5799
5826
|
}
|
|
5800
|
-
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "audio");
|
|
5827
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "audio");
|
|
5801
5828
|
if (beforeEffectTrack) {
|
|
5802
5829
|
this._monitorAudioTrack(beforeEffectTrack);
|
|
5803
5830
|
}
|
|
@@ -5868,7 +5895,9 @@ class VegaRtcManager {
|
|
|
5868
5895
|
}
|
|
5869
5896
|
if (!enable) {
|
|
5870
5897
|
clearTimeout(this._stopCameraTimeout);
|
|
5871
|
-
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
5898
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
5899
|
+
? 0
|
|
5900
|
+
: 5000;
|
|
5872
5901
|
this._stopCameraTimeout = setTimeout(() => {
|
|
5873
5902
|
localStream.getVideoTracks().forEach((track) => {
|
|
5874
5903
|
if (track.enabled === false) {
|
|
@@ -6420,6 +6449,7 @@ const logger = new Logger();
|
|
|
6420
6449
|
class ReconnectManager extends EventEmitter$1 {
|
|
6421
6450
|
constructor(socket) {
|
|
6422
6451
|
super();
|
|
6452
|
+
this.reconnectThresholdInMs = 0;
|
|
6423
6453
|
this._socket = socket;
|
|
6424
6454
|
this._clients = {};
|
|
6425
6455
|
this._signalDisconnectTime = undefined;
|
|
@@ -6445,6 +6475,7 @@ class ReconnectManager extends EventEmitter$1 {
|
|
|
6445
6475
|
_onRoomJoined(payload) {
|
|
6446
6476
|
var _a, _b;
|
|
6447
6477
|
return __awaiter(this, void 0, void 0, function* () {
|
|
6478
|
+
this.reconnectThresholdInMs = (payload.disconnectTimeout || 0) * 0.8 || 0;
|
|
6448
6479
|
if (!((_a = payload.room) === null || _a === void 0 ? void 0 : _a.clients)) {
|
|
6449
6480
|
this.emit(PROTOCOL_RESPONSES.ROOM_JOINED, payload);
|
|
6450
6481
|
return;
|
|
@@ -6698,6 +6729,7 @@ class ServerSocket {
|
|
|
6698
6729
|
}
|
|
6699
6730
|
});
|
|
6700
6731
|
this._socket.on("disconnect", () => {
|
|
6732
|
+
this.disconnectTimestamp = Date.now();
|
|
6701
6733
|
if (this.noopKeepaliveInterval) {
|
|
6702
6734
|
clearInterval(this.noopKeepaliveInterval);
|
|
6703
6735
|
this.noopKeepaliveInterval = null;
|
|
@@ -6781,6 +6813,10 @@ class ServerSocket {
|
|
|
6781
6813
|
var _a;
|
|
6782
6814
|
return (_a = this._reconnectManager) === null || _a === void 0 ? void 0 : _a.metrics;
|
|
6783
6815
|
}
|
|
6816
|
+
getReconnectThreshold() {
|
|
6817
|
+
var _a;
|
|
6818
|
+
return (_a = this._reconnectManager) === null || _a === void 0 ? void 0 : _a.reconnectThresholdInMs;
|
|
6819
|
+
}
|
|
6784
6820
|
}
|
|
6785
6821
|
|
|
6786
6822
|
const defaultSubdomainPattern = /^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/;
|