Skip to content

Commit 5d4cf75

Browse files
committed
Merge pull request webtorrent#123 from DiegoRBaquero/patch-1
Reconnect timeout improvement
2 parents b2ff218 + 050d95a commit 5d4cf75

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

lib/client/websocket-tracker.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ var Tracker = require('./tracker')
1515
// boost, and saves browser resources.
1616
var socketPool = {}
1717

18+
var RECONNECT_MINIMUM = 15 * 1000
19+
var RECONNECT_MAXIMUM = 30 * 60 * 1000
1820
var RECONNECT_VARIANCE = 30 * 1000
19-
var RECONNECT_MINIMUM = 5 * 1000
2021
var OFFER_TIMEOUT = 50 * 1000
2122

2223
inherits(WebSocketTracker, Tracker)
@@ -29,6 +30,7 @@ function WebSocketTracker (client, announceUrl, opts) {
2930
self.peers = {} // peers (offer id -> peer)
3031
self.socket = null
3132
self.reconnecting = false
33+
self.retries = 0
3234

3335
self._openSocket()
3436
}
@@ -134,6 +136,7 @@ WebSocketTracker.prototype._onSocketConnect = function () {
134136

135137
if (self.reconnecting) {
136138
self.reconnecting = false
139+
self.retries = 0
137140
self.announce(self.client._defaultAnnounceOpts())
138141
}
139142
}
@@ -285,10 +288,11 @@ WebSocketTracker.prototype._onSocketError = function (err) {
285288

286289
WebSocketTracker.prototype._startReconnectTimer = function () {
287290
var self = this
288-
var ms = Math.floor(Math.random() * RECONNECT_VARIANCE) + RECONNECT_MINIMUM
291+
var ms = Math.floor(Math.random() * RECONNECT_VARIANCE) + Math.min(Math.pow(2, self.retries) * RECONNECT_MINIMUM, RECONNECT_MAXIMUM)
289292

290293
self.reconnecting = true
291294
var reconnectTimer = setTimeout(function () {
295+
self.retries++
292296
self._openSocket()
293297
}, ms)
294298
if (reconnectTimer.unref) reconnectTimer.unref()

0 commit comments

Comments
 (0)