class Angelo::Responder::Eventsource

Public Class Methods

new(_headers = nil, &block) click to toggle source
Calls superclass method Angelo::Responder::new
# File lib/angelo/responder/eventsource.rb, line 5
def initialize _headers = nil, &block
  headers _headers if _headers
  super :get, &block
end

Public Instance Methods

handle_request() click to toggle source
# File lib/angelo/responder/eventsource.rb, line 15
def handle_request
  if !@response_handler
      raise NotImplementedError
  end
  @base.filter :before
  @body = catch(:halt) do
    @base.eventsource do |socket|
      @base.instance_exec(socket, &@response_handler)
    end
  end
  if HALT_STRUCT === @body
    raise RequestError.new 'unknown sse error' unless @body.body == :sse
  end

  # TODO any real reason not to run afters with SSE?
  # @base.filter :after

  respond
rescue IOError => ioe
  warn "#{ioe.class} - #{ioe.message}"
rescue RequestError => re
  headers SSE_HEADER
  handle_error re, re.type
rescue => e
  handle_error e
end
request=(request) click to toggle source
# File lib/angelo/responder/eventsource.rb, line 10
def request= request
  @params = nil
  @request = request
end
respond() click to toggle source
# File lib/angelo/responder/eventsource.rb, line 42
def respond
  Angelo.log :sse, @connection, @request, nil, :ok
  @request.respond 200, headers, nil
end