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 20 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 32 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