class Rasti::Web::Broadcaster
Constants
- VERSION
Attributes
app[R]
Public Class Methods
new(app, headers={})
click to toggle source
# File lib/rasti/web/broadcaster.rb, line 40 def initialize(app, headers={}) @app = app @headers = headers end
Private Class Methods
broadcaster()
click to toggle source
# File lib/rasti/web/broadcaster.rb, line 32 def broadcaster @mutex.synchronize do @broadcaster ||= ::Broadcaster.new configuration end end
Public Instance Methods
call(env)
click to toggle source
# File lib/rasti/web/broadcaster.rb, line 45 def call(env) if Faye::EventSource.eventsource? env event_source = Faye::EventSource.new env, headers: @headers channel = env['PATH_INFO'][1..-1] subscription_id = self.class.subscribe channel do |message| event_source.send message[:data], event: message[:event], id: message[:id] end event_source.on :close do self.class.unsubscribe subscription_id event_source = nil end event_source.rack_response else app.call env end end