From 5954fd1e0aa907e07ffff932aedc51109d4ce56d Mon Sep 17 00:00:00 2001 From: Lachlan Sylvester Date: Wed, 22 Jul 2015 11:03:47 +1000 Subject: add broadcast_to and stream_for methods as per #26 --- lib/action_cable/channel/broadcasting.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 lib/action_cable/channel/broadcasting.rb (limited to 'lib/action_cable/channel/broadcasting.rb') diff --git a/lib/action_cable/channel/broadcasting.rb b/lib/action_cable/channel/broadcasting.rb new file mode 100644 index 0000000000..ee4117bc0a --- /dev/null +++ b/lib/action_cable/channel/broadcasting.rb @@ -0,0 +1,27 @@ +module ActionCable + module Channel + module Broadcasting + extend ActiveSupport::Concern + + delegate :broadcasting_for, to: :class + + class_methods do + # Broadcast a hash to a unique broadcasting for this model in this channel. + def broadcast_to(model, message) + ActionCable.server.broadcast(broadcasting_for([ channel_name, model ]), message) + end + + def broadcasting_for(model) #:nodoc: + case + when model.is_a?(Array) + model.map { |m| broadcasting_for(m) }.join(':') + when model.respond_to?(:to_gid_param) + model.to_gid_param + else + model.to_param + end + end + end + end + end +end -- cgit v1.2.3