aboutsummaryrefslogtreecommitdiffstats
path: root/lib/action_cable/server/broadcasting.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2015-06-28 20:36:10 +0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2015-06-29 15:14:52 +0200
commit8a2af53c8e83cd9258380fad4007e53f8721aa93 (patch)
treef1f76f9c7d0c6a09d1cdf139a6b4f43f5efb63bd /lib/action_cable/server/broadcasting.rb
parente1a99a83ca135523ff8513be756f156500999cb8 (diff)
downloadrails-8a2af53c8e83cd9258380fad4007e53f8721aa93.tar.gz
rails-8a2af53c8e83cd9258380fad4007e53f8721aa93.tar.bz2
rails-8a2af53c8e83cd9258380fad4007e53f8721aa93.zip
More redis used for broadcasting into broadcasting concern
Diffstat (limited to 'lib/action_cable/server/broadcasting.rb')
-rw-r--r--lib/action_cable/server/broadcasting.rb32
1 files changed, 18 insertions, 14 deletions
diff --git a/lib/action_cable/server/broadcasting.rb b/lib/action_cable/server/broadcasting.rb
index 682064571f..691ec1b486 100644
--- a/lib/action_cable/server/broadcasting.rb
+++ b/lib/action_cable/server/broadcasting.rb
@@ -1,28 +1,32 @@
module ActionCable
module Server
module Broadcasting
+ def broadcast(channel, message)
+ broadcaster_for(channel).broadcast(message)
+ end
+
def broadcaster_for(channel)
Broadcaster.new(self, channel)
end
- def broadcast(channel, message)
- broadcaster_for(channel).broadcast(message)
- end
+ private
+ def redis_for_threads
+ @redis_for_threads ||= Redis.new(redis_config)
+ end
- class Broadcaster
- attr_reader :server, :channel, :redis
- delegate :logger, to: :server
+ class Broadcaster
+ def initialize(server, channel)
+ @server, @channel = server, channel
+ end
- def initialize(server, channel)
- @server, @channel = server, channel
- @redis = @server.threaded_redis
- end
+ def broadcast(message, log: true)
+ server.logger.info "[ActionCable] Broadcasting to #{channel}: #{message}" if log
+ server.redis_for_threads.publish channel, message.to_json
+ end
- def broadcast(message)
- logger.info "[ActionCable] Broadcasting to #{channel}: #{message}"
- redis.publish channel, message.to_json
+ private
+ attr_reader :server, :channel
end
- end
end
end
end \ No newline at end of file