123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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)
- end
- def listen(url)
- ps_thread = Thread.new do
- begin
- uri = URI.parse(url)
- Net::HTTP.start(uri.host, uri.port) do |http|
- request = Net::HTTP::Get.new uri.request_uri
- http.request request do |response|
- body = ''
- response.read_body do |chunk|
- event = JSON.parse(chunk)
- if event['stillalive'] # pingback
- print("ping? PONG!\n")
- else
- do_stuff_with(event)
- 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...")
- while ps_thread.alive?
- sleep 10
- end
- end
|