From fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca Mon Sep 17 00:00:00 2001 From: Javan Makhmali Date: Sun, 23 Aug 2015 17:57:09 -0400 Subject: Immediately reconnect when visibilityState changes to "visible" --- lib/assets/javascripts/cable/connection_monitor.js.coffee | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib/assets') diff --git a/lib/assets/javascripts/cable/connection_monitor.js.coffee b/lib/assets/javascripts/cable/connection_monitor.js.coffee index cac65d9043..5573ea5a77 100644 --- a/lib/assets/javascripts/cable/connection_monitor.js.coffee +++ b/lib/assets/javascripts/cable/connection_monitor.js.coffee @@ -30,9 +30,11 @@ class Cable.ConnectionMonitor delete @stoppedAt @startedAt = now() @poll() + document.addEventListener("visibilitychange", @visibilityDidChange) stop: -> @stoppedAt = now() + document.removeEventListener("visibilitychange", @visibilityDidChange) poll: -> setTimeout => @@ -57,6 +59,13 @@ class Cable.ConnectionMonitor else secondsSince(@startedAt) > @staleThreshold.startedAt + visibilityDidChange: => + if document.visibilityState is "visible" + setTimeout => + if @connectionIsStale() or not @consumer.connection.isOpen() + @consumer.connection.reopen() + , 200 + toJSON: -> interval = @getInterval() connectionIsStale = @connectionIsStale() -- cgit v1.2.3