client.rb 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. require 'net/http'
  2. require 'json'
  3. require 'thread'
  4. pubsub_URL = 'http://pubsub.example.org:2069/'
  5. def do_stuff_with(event)
  6. print("Got a pubsub event!:\n")
  7. print(event)
  8. end
  9. def listen(url)
  10. ps_thread = Thread.new do
  11. begin
  12. uri = URI.parse(url)
  13. Net::HTTP.start(uri.host, uri.port) do |http|
  14. request = Net::HTTP::Get.new uri.request_uri
  15. http.request request do |response|
  16. body = ''
  17. response.read_body do |chunk|
  18. event = JSON.parse(chunk)
  19. if event['stillalive'] # pingback
  20. print("ping? PONG!\n")
  21. else
  22. do_stuff_with(event)
  23. end
  24. end
  25. end
  26. end
  27. rescue Errno::ECONNREFUSED => e
  28. restartable = true
  29. STDERR.puts e
  30. sleep 3
  31. rescue Exception => e
  32. STDERR.puts e
  33. STDERR.puts e.backtrace
  34. end
  35. end
  36. return ps_thread
  37. end
  38. begin
  39. ps_thread = listen(pubsub_URL)
  40. print("Pubsub thread started, waiting for results...")
  41. while ps_thread.alive?
  42. sleep 10
  43. end
  44. end