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