aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJavan Makhmali <javan@javan.us>2015-08-23 17:57:09 -0400
committerJavan Makhmali <javan@javan.us>2015-08-23 17:57:09 -0400
commitfa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca (patch)
tree0208477703bdd84aaa5d4eae2530e884e943e63d /lib
parent6143352f8ffba303f0c7644be7573f6725554cb3 (diff)
downloadrails-fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca.tar.gz
rails-fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca.tar.bz2
rails-fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca.zip
Immediately reconnect when visibilityState changes to "visible"
Diffstat (limited to 'lib')
-rw-r--r--lib/assets/javascripts/cable/connection_monitor.js.coffee9
1 files changed, 9 insertions, 0 deletions
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()