Wrapper around Ruby's standard HTTP libraries to make them evented (if EventMachine is running)
C Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
ext
lib
spec
.gitignore
MIT-LICENSE
README.rdoc
Rakefile
VERSION
evented_net.gemspec

README.rdoc

Introduction

This library enables you to make evented HTTP calls if an EventMachine reactor is running.

If not, it falls back to a regular synchronous HTTP call. In both cases, you specify a proc which will be used as a callback with the HTTP code and the HTTP body being passed as parameters.

The aim of this library is to make a consistent API for both synchronous and evented HTTP calls.

Acknowledgement

The awesome blog post by Ilya Grigorik (www.igvita.com/2008/05/27/ruby-eventmachine-the-speed-demon/) really inspired me to dive into EventMachine, and the code samples that he's posted have been a real Godsend.

Sample Code which uses EventedNet::HTTP POST call

require 'rubygems'
require 'evented_net'
require 'evma_httpserver'
require 'cgi'

class Handler  < EventMachine::Connection
  include EventMachine::HttpServer

  def process_evented_http_req(code, body)
    puts "Code: #{code} Body: #{body}"
  end

  def process_http_request
    uri = URI.parse('http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi')
    EventedNet::HTTP.post(uri, :callback => method(:process_evented_http_req), :params => {:Comments => 'Testing Attention Please'})
  end
end

EventMachine::run {
  # When running on Mac OS X, use EventMachine.kqueue
  # When running on Linux 2.6.x kernels, use EventMachine.epoll
  EventMachine.kqueue
  EventMachine::start_server("0.0.0.0", 8082, Handler)
  puts "Listening"
}