@alvarocastro/backoff
v1.0.1
Published
Simple implementation of a backoff utility
Downloads
4
Readme
Backoff
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 :)