diff options
author | Jon Moss <me@jonathanmoss.me> | 2016-01-06 17:16:02 -0500 |
---|---|---|
committer | Jon Moss <me@jonathanmoss.me> | 2016-01-18 18:58:57 -0500 |
commit | 0016e0410b11d40a1d730a1232c40f428d67abeb (patch) | |
tree | 172b2fe1e0e2424a2eab33c95ec38487d5b5996d /actioncable/lib/action_cable/storage_adapter/redis.rb | |
parent | 75f1b229fdb340b2cdaf632bb6a223213f05dc75 (diff) | |
download | rails-0016e0410b11d40a1d730a1232c40f428d67abeb.tar.gz rails-0016e0410b11d40a1d730a1232c40f428d67abeb.tar.bz2 rails-0016e0410b11d40a1d730a1232c40f428d67abeb.zip |
Adapterize ActionCable storage and extract behavior
Diffstat (limited to 'actioncable/lib/action_cable/storage_adapter/redis.rb')
-rw-r--r-- | actioncable/lib/action_cable/storage_adapter/redis.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/actioncable/lib/action_cable/storage_adapter/redis.rb b/actioncable/lib/action_cable/storage_adapter/redis.rb new file mode 100644 index 0000000000..7b712b9b03 --- /dev/null +++ b/actioncable/lib/action_cable/storage_adapter/redis.rb @@ -0,0 +1,30 @@ +require 'em-hiredis' +require 'redis' + +module ActionCable + module StorageAdapter + class Redis < Base + # The redis instance used for broadcasting. Not intended for direct user use. + def broadcast + @broadcast ||= ::Redis.new(@server.config.config_opts) + end + + def pubsub + redis.pubsub + end + + private + + # The EventMachine Redis instance used by the pubsub adapter. + def redis + @redis ||= EM::Hiredis.connect(@server.config.config_opts[:url]).tap do |redis| + redis.on(:reconnect_failed) do + @logger.info "[ActionCable] Redis reconnect failed." + # logger.info "[ActionCable] Redis reconnected. Closing all the open connections." + # @connections.map &:close + end + end + end + end + end +end |