Implements exponential backoff and jitter. This class tracks successful connections and failures and produces a retry delay.

It does not start any timers or directly control a connection.

The backoff follows an exponential backoff scheme with 50% jitter starting at initialRetryDelayMillis and capping at MAX_RETRY_DELAY. If RESET_INTERVAL has elapsed after a success, without an intervening faulure, then the backoff is reset to initialRetryDelayMillis.

Hierarchy

  • DefaultBackoff

Constructors

Properties

_activeSince?: number
_initialRetryDelayMillis: number
_maxExponent: number

The exponent at which the backoff delay will exceed the maximum. Beyond this limit the backoff can be set to the max.

_random: (() => number) = Math.random

Type declaration

    • (): number
    • Returns a pseudorandom number between 0 and 1.

      Returns number

_retryCount: number = 0
_retryResetIntervalMillis: number

Methods

  • This function should be called when a connection fails. It returns the a delay, in milliseconds, after which a reconnection attempt should be made.

    Parameters

    • timeStampMs: number = ...

      The time of the success. Used primarily for testing, when not provided the current time is used.

    Returns number

    The delay before the next connection attempt.

  • This function should be called when a connection attempt is successful.

    Parameters

    • timeStampMs: number = ...

      The time of the success. Used primarily for testing, when not provided the current time is used.

    Returns void

Generated using TypeDoc