From 8a2af53c8e83cd9258380fad4007e53f8721aa93 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 28 Jun 2015 20:36:10 +0200 Subject: More redis used for broadcasting into broadcasting concern --- lib/action_cable/server/broadcasting.rb | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'lib/action_cable/server/broadcasting.rb') 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 -- cgit v1.2.3