module StreamModule

Constants

SECRET
SITE_URL

Attributes

connection[RW]
es[RW]

the event_stream object

event_source[RW]
on_message_handler_function[RW]
private_key_hash[RW]

Public Instance Methods

on_message_handler(data) click to toggle source
# File lib/publisher/stream_module.rb, line 63
def on_message_handler(data)
        #puts "got some data"
        #puts data
end
setup_connection() click to toggle source
# File lib/publisher/stream_module.rb, line 13
def setup_connection
        raise "please provide the private key hash, from firebase service account -> create private key " if self.private_key_hash.blank?
        raise "no event source endpoint provided" if self.event_source.blank?
        self.connection = RestFirebase.new :site => SITE_URL,
             :secret => SECRET, :private_key_hash => private_key_hash, :auth_ttl => 1800
self.on_message_handler_function ||= "on_message_handler"

end
watch() click to toggle source
# File lib/publisher/stream_module.rb, line 22
def watch
        @reconnect = true
        self.es = self.connection.event_source(self.event_source)
        self.es.onopen   { |sock| p sock } # Called when connecte
        self.es.onmessage{ |event, data, sock| 
                #puts "event: #{event}"
                send(self.on_message_handler_function,data)
        }
        self.es.onerror  { |error, sock| p error } # Called 4
        self.es.onreconnect{ |error, sock| p error; @reconnect }
        self.es.start
        rd, wr = IO.pipe
        %w[INT TERM].each do |sig|
          Signal.trap(sig) do
            wr.puts # unblock the main thread
          end
        end
        rd.gets # block main thread until INT or TERM received
        @reconnect = false
        self.es.close
        self.es.wait # shutdown cleanly
end
watch_limited(seconds) click to toggle source
# File lib/publisher/stream_module.rb, line 45
def watch_limited(seconds)
        
        @reconnect = true
        self.es = self.connection.event_source(self.event_source)
        self.es.onopen   { |sock| p sock } # Called when connecte
        self.es.onmessage{ |event, data, sock| 
                send(self.on_message_handler_function,data)
        }
        self.es.onerror  { |error, sock| p error } # Called 4
        self.es.onreconnect{ |error, sock| p error; @reconnect }
        self.es.start
        sleep(seconds)
        @reconnect = false
        self.es.close
        self.es.wait # shutdown cleanly
        
end