blob: 1f0060e0d6b4ce736b909368a7ee8199a327f0bb [file] [log] [blame]
require 'net/http'
require 'json'
require 'thread'
pubsub_URL = 'http://pubsub.example.org:2069/'
def do_stuff_with(event)
print("Got a pubsub event!:\n")
print(event, "\n")
end
def listen(url)
ps_thread = Thread.new do
begin
uri = URI.parse(url)
Net::HTTP.start(uri.host, uri.port, :use_ssl => url.match(/^https:/) ? true : false) do |http|
request = Net::HTTP::Get.new uri.request_uri
http.request request do |response|
body = ''
response.read_body do |chunk|
body += chunk
if chunk.end_with? "\n"
event = JSON.parse(body.chomp)
body = ''
if event['stillalive'] # pingback
print("ping? PONG!\n")
else
do_stuff_with(event)
end
end
end
end
end
rescue Errno::ECONNREFUSED => e
restartable = true
STDERR.puts e
sleep 3
rescue Exception => e
STDERR.puts e
STDERR.puts e.backtrace
end
end
return ps_thread
end
begin
ps_thread = listen(pubsub_URL)
print("Pubsub thread started, waiting for results...\n")
while ps_thread.alive?
sleep 10
end
end