livekit-client
Version:
JavaScript/TypeScript client SDK for LiveKit
36 lines (27 loc) • 885 B
text/typescript
import type { ReconnectContext, ReconnectPolicy } from './ReconnectPolicy';
const maxRetryDelay = 7000;
const DEFAULT_RETRY_DELAYS_IN_MS = [
0,
300,
2 * 2 * 300,
3 * 3 * 300,
4 * 4 * 300,
maxRetryDelay,
maxRetryDelay,
maxRetryDelay,
maxRetryDelay,
maxRetryDelay,
];
class DefaultReconnectPolicy implements ReconnectPolicy {
private readonly _retryDelays: number[];
constructor(retryDelays?: number[]) {
this._retryDelays = retryDelays !== undefined ? [...retryDelays] : DEFAULT_RETRY_DELAYS_IN_MS;
}
public nextRetryDelayInMs(context: ReconnectContext): number | null {
if (context.retryCount >= this._retryDelays.length) return null;
const retryDelay = this._retryDelays[context.retryCount];
if (context.retryCount <= 1) return retryDelay;
return retryDelay + Math.random() * 1_000;
}
}
export default DefaultReconnectPolicy;