reconnection scipr
by Vladymyr Shevchuk
JavaScript
function connectToSocket() {
return new Promise((resolve, reject) => {
const randomizer = Math.round(Math.random());
if (randomizer) {
console.error('connection error');
return reject();
} else {
console.error('success connection');
return resolve();
}
});
}
function tryReconnect() {
const attemptCount = [1, 2, 3, 4];
let timer = 1000;
attemptCount.reduce(
(p, i) => p.then(
() => new Promise(
(resolve, reject) => {
timer *= i;
setTimeout(() => {
console.error(`attempt: ${i}, timer: ${timer}s`);
return connectToSocket().then(
() => {
console.error('don\'t continue connect');
return reject();
},
() => {
console.error('try reconnect');
return resolve();
}
);
}, timer);
}
)
),
Promise.resolve()
);
}