Skip to content

Instantly share code, notes, and snippets.

@kenn
Created March 4, 2010 05:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenn/321423 to your computer and use it in GitHub Desktop.
Save kenn/321423 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'eventmachine'
require 'evma_httpserver'
class HttpHandler < EM::Connection
include EM::HttpServer
@@listeners = []
def process_http_request
resp = EM::DelegatedHttpResponse.new(self)
case @http_path_info
when '/observe'
@@listeners.push(resp)
puts "Observed (#{@@listeners.length} total)"
when '/notify'
@@listeners.each_with_index do |listener, i|
puts "Notified #{i}"
listener.status = 200
listener.content = "Hello World #{i}!"
listener.send_response
end
@@listeners = []
resp.status = 200
resp.content = "Success!"
resp.send_response
else
resp.status = 200
resp.content = "Received #{resp.inspect}!"
resp.send_response
end
end
end
EM.run do
EM.start_server "0.0.0.0", 6000, HttpHandler
puts 'listening...'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment