Neutron Polarization Manipulator

    @alvarocastro/backoff

    1.0.1 • Public • Published

    Backoff

    NPM Build status Maintainability status Coverage status Bundle size Code style: XO Release: Semantic

    A simple implementation of a backoff utility.

    Install

    npm install @alvarocastro/backoff

    Usage

    const Backoff = require('@alvarocastro/backoff');
    const backoff = new Backoff();
     
    const connect = function () {
        console.log('Connecting...');
        const rand = Math.random();
     
        if (rand < 0.2) {
            console.log('Success!');
            backoff.reset();
            return true;
        }
        
        const delay = backoff.duration();
        console.log(`Failed. Retrying in ${delay}ms`);
        setTimeout(function () {
            connect();
        }, delay);
    };
     
    connect();

    Backoff(options = {min: 1000, max: 60000, factor: 2, jitter: 0})

    Receives an optional options object.

    options.min

    Type: Number
    Default: 1000

    Minimum duration.

    options.max

    Type: Number
    Default: 6000

    Maximum duration.

    options.factor

    Type: Number
    Default: 2

    Factor in which the duration increases each time.

    options.jitter

    Type: Number
    Default: 0

    Randomizes the duration. For example with a value of 0.5 the initial default duration will be between 500 and 1500. The randomization when used in a reconnection helps smooth the load induced by the reconnection attempts of multiple clients, in case a server goes down. Use 0 for no randomization.

    duration()

    Returns the next time to wait in milliseconds.

    reset()

    Resets the internal attempts count, bringing the next duration() time back to the starting value.

    Contributing

    Contributions are always welcome! Please run npm test beforehand to ensure everything is ok.

    Support

    If you use this package please consider starring it :)

    Keywords

    Install

    npm i @alvarocastro/backoff

    DownloadsWeekly Downloads

    1

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    8.33 kB

    Total Files

    8

    Last publish

    Collaborators

    • avatar