class ServerSentEvents::Client

Client is a class whose responsibility is to stream the response data from the server, feed that data into parser and call user supplied block when events are detected.

Public Class Methods

new(address, parser, headers = {}) click to toggle source

Create new SSE client.

Note that creating new client does not establish connection to the server. Connection is established by the {#listen} call and torn down automatically when {#listen returns}.

@param address [URI] endpoint to connect to @param parser [Parser] object that should be used to parse incoming data @param headers [Hash] additional headers that should be added to request

# File lib/server_sent_events/client.rb, line 21
def initialize(address, parser, headers = {})
  @address = address
  @headers = headers
  @parser = parser
end

Public Instance Methods

listen() { |e| ... } click to toggle source

Listen for events from the server.

To perform some action when event arrives, specify a block that gets executed eact time new event is availble like this:

client.listen { |e| puts e }
# File lib/server_sent_events/client.rb, line 33
def listen
  Net::HTTP.start(@address.host, @address.port) do |http|
    # TODO(@tadeboro): Add support for adding custom headers (auth)
    http.request(Net::HTTP::Get.new(@address)) do |response|
      # TODO(@tadeboro): Handle non-200 here
      response.read_body do |chunk|
        @parser.push(chunk).each { |e| yield(e) }
      end
    end
  end
end