Class: WhereIsWaldo::RosterDelivery::Fanout
- Defined in:
- app/services/where_is_waldo/roster_delivery.rb
Overview
Instant per-viewer push for arbitrary/asymmetric visibility. Each viewer streams only their own stream and gets a server-filtered snapshot on connect; on a transition the subject's delta is pushed to every viewer in its directional audience (config.roster_viewers_of). O(audience) per transition — the price of instant delivery under restricted visibility.
Instance Method Summary collapse
Methods inherited from Base
Instance Method Details
#on_transition(subject_id) ⇒ Object
179 180 181 |
# File 'app/services/where_is_waldo/roster_delivery.rb', line 179 def on_transition(subject_id) Roster.publish_fanout(subject_id) end |
#subscribe_plan(subject, _session_id) ⇒ Object
171 172 173 174 175 176 177 |
# File 'app/services/where_is_waldo/roster_delivery.rb', line 171 def subscribe_plan(subject, _session_id) members = Roster.members_for(config.resolve_visible_to(subject)) { streams: [Roster.viewer_stream(subject.id)], messages: [Roster.(members.values, mode: :fanout)] } end |