Skip to content

Commit

Permalink
Add minimum timeout option
Browse files Browse the repository at this point in the history
Fix #403
  • Loading branch information
brycekahle committed Aug 22, 2019
1 parent 608cf2f commit 537352c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
7 changes: 7 additions & 0 deletions README.md
Expand Up @@ -152,6 +152,13 @@ Where `options` is a hash which can contain:
If you don't specify this option, the default is to use the default random
string generator to generate 8-character long session ids.

* **timeout (number)**

Specify a minimum timeout in milliseconds to use for the transport connections.
By default this is dynamically calculated based on the measured RTT and
the number of expected round trips. This setting will establish a minimum,
but if the calculated timeout is higher, that will be used.

Although the 'SockJS' object tries to emulate the 'WebSocket'
behaviour, it's impossible to support all of its features. An
important SockJS limitation is the fact that you're not allowed to
Expand Down
3 changes: 2 additions & 1 deletion lib/main.js
Expand Up @@ -49,6 +49,7 @@ function SockJS(url, protocols, options) {
}
this._transportsWhitelist = options.transports;
this._transportOptions = options.transportOptions || {};
this._timeout = options.timeout || 0;

var sessionId = options.sessionId || 8;
if (typeof sessionId === 'function') {
Expand Down Expand Up @@ -209,7 +210,7 @@ SockJS.prototype._connect = function() {
}

// calculate timeout based on RTO and round trips. Default to 5s
var timeoutMs = (this._rto * Transport.roundTrips) || 5000;
var timeoutMs = Math.max(this._timeout, (this._rto * Transport.roundTrips) || 5000);
this._transportTimeoutId = setTimeout(this._transportTimeout.bind(this), timeoutMs);
debug('using timeout', timeoutMs);

Expand Down

0 comments on commit 537352c

Please sign in to comment.