diff options
author | Javan Makhmali <javan@javan.us> | 2015-08-23 17:57:09 -0400 |
---|---|---|
committer | Javan Makhmali <javan@javan.us> | 2015-08-23 17:57:09 -0400 |
commit | fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca (patch) | |
tree | 0208477703bdd84aaa5d4eae2530e884e943e63d | |
parent | 6143352f8ffba303f0c7644be7573f6725554cb3 (diff) | |
download | rails-fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca.tar.gz rails-fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca.tar.bz2 rails-fa362c724d9cbfd002166cf20f6b4c3ee1f4c4ca.zip |
Immediately reconnect when visibilityState changes to "visible"
-rw-r--r-- | lib/assets/javascripts/cable/connection_monitor.js.coffee | 9 |
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() |