From 0016e0410b11d40a1d730a1232c40f428d67abeb Mon Sep 17 00:00:00 2001 From: Jon Moss Date: Wed, 6 Jan 2016 17:16:02 -0500 Subject: Adapterize ActionCable storage and extract behavior --- .../lib/action_cable/storage_adapter/redis.rb | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 actioncable/lib/action_cable/storage_adapter/redis.rb (limited to 'actioncable/lib/action_cable/storage_adapter/redis.rb') 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 -- cgit v1.2.3