Skip to content

Instantly share code, notes, and snippets.

@softprops
Forked from linusthe3rd/exponentialBackoff.js
Created March 13, 2014 02:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save softprops/9520651 to your computer and use it in GitHub Desktop.
Save softprops/9520651 to your computer and use it in GitHub Desktop.
function createWebSocket () {
var connection = new WebSocket();
var attempts = 1;
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;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment