Class: MyDashboard::EventsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- MyDashboard::EventsController
- Includes:
- ActionController::Live
- Defined in:
- app/controllers/my_dashboard/events_controller.rb
Instance Method Summary collapse
Instance Method Details
#index ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/controllers/my_dashboard/events_controller.rb', line 5 def index response.headers['Content-Type'] = 'text/event-stream' response.headers['X-Accel-Buffering'] = 'no' response.stream.write latest_events @redis = MyDashboard.redis @redis.psubscribe("#{MyDashboard.config.redis_namespace}.*") do |on| on. do |pattern, event, data| response.stream.write("data: #{data}\n\n") end end rescue IOError logger.info "[MyDashboard][#{Time.now.utc.to_s}] Stream closed" ensure @redis.quit unless @redis.nil? response.stream.close end |
#latest_events ⇒ Object
23 24 25 26 |
# File 'app/controllers/my_dashboard/events_controller.rb', line 23 def latest_events events = MyDashboard.redis.hvals("#{MyDashboard.config.redis_namespace}.latest") events.map { |v| "data: #{v}\n\n" }.join end |