Class: WhereIsWaldo::Broadcaster
- Inherits:
-
Object
- Object
- WhereIsWaldo::Broadcaster
- Defined in:
- app/services/where_is_waldo/broadcaster.rb
Class Method Summary collapse
-
.broadcast_to(scope, message_type, data = {}) ⇒ Object
Broadcast a message to subjects in an AR scope.
-
.broadcast_to_online(scope, message_type, data = {}) ⇒ Object
Broadcast to online subjects only (from an AR scope).
-
.broadcast_to_session(session_id, message_type, data = {}) ⇒ Object
Broadcast to a specific session.
Class Method Details
.broadcast_to(scope, message_type, data = {}) ⇒ Object
Broadcast a message to subjects in an AR scope
10 11 12 13 14 15 16 17 18 19 |
# File 'app/services/where_is_waldo/broadcaster.rb', line 10 def broadcast_to(scope, , data = {}) subject_ids = extract_subject_ids(scope) return if subject_ids.empty? = (, data) subject_ids.each do |subject_id| ActionCable.server.broadcast(subject_stream(subject_id), ) end end |
.broadcast_to_online(scope, message_type, data = {}) ⇒ Object
Broadcast to online subjects only (from an AR scope)
25 26 27 28 29 30 31 32 33 34 |
# File 'app/services/where_is_waldo/broadcaster.rb', line 25 def broadcast_to_online(scope, , data = {}) online_ids = PresenceService.online_ids(scope) return if online_ids.empty? = (, data) online_ids.each do |subject_id| ActionCable.server.broadcast(subject_stream(subject_id), ) end end |
.broadcast_to_session(session_id, message_type, data = {}) ⇒ Object
Broadcast to a specific session
40 41 42 43 44 45 46 47 |
# File 'app/services/where_is_waldo/broadcaster.rb', line 40 def broadcast_to_session(session_id, , data = {}) status = PresenceService.session_status(session_id) return false unless status = (, data, target_session: session_id) ActionCable.server.broadcast(subject_stream(status[:subject_id]), ) true end |