Skip to content

Instantly share code, notes, and snippets.

@linusthe3rd
Last active June 30, 2022 15:21
Show Gist options
  • Save linusthe3rd/9310539 to your computer and use it in GitHub Desktop.
Save linusthe3rd/9310539 to your computer and use it in GitHub Desktop.
var attempts = 1;
function createWebSocket () {
var connection = new WebSocket();
connection.onopen = function () {
// reset the tries back to 1 since we have a new connection opened.
attempts = 1;
// ...Your app's logic...
}
connection.onclose = function () {
var time = generateInterval(attempts);
setTimeout(function () {
// We've tried to reconnect so increment the attempts by 1
attempts++;
// Connection has closed so try to reconnect every 10 seconds.
createWebSocket();
}, time);
}
}
function generateInteval (k) {
var maxInterval = (Math.pow(2, k) - 1) * 1000;
if (maxInterval > 30*1000) {
maxInterval = 30*1000; // If the generated interval is more than 30 seconds, truncate it down to 30 seconds.
}
// generate the interval to a random number between 0 and the maxInterval determined from above
return Math.random() * maxInterval;
}
@kryhtin
Copy link

kryhtin commented Feb 14, 2017

Reconnection will happen only once, use setInterval instead setTimeout

@kenan2002
Copy link

@ds0nt
Your one-line code lack a random number generate process.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment