• Stars
    star
    1,216
  • Rank 36,949 (Top 0.8 %)
  • Language
    Ruby
  • Created over 15 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Asynchronous HTTP Client (EventMachine + Ruby)

EM-HTTP-Request

Gem Version CI

Async (EventMachine) HTTP client, with support for:

  • Asynchronous HTTP API for single & parallel request execution
  • Keep-Alive and HTTP pipelining support
  • Auto-follow 3xx redirects with max depth
  • Automatic gzip & deflate decoding
  • Streaming response processing
  • Streaming file uploads
  • HTTP proxy and SOCKS5 support
  • Basic Auth & OAuth
  • Connection-level & global middleware support
  • HTTP parser via http_parser.rb
  • Works wherever EventMachine runs: Rubinius, JRuby, MRI

Getting started

gem install em-http-request

Extensions

Several higher-order Ruby projects have incorporated em-http and other Ruby HTTP clients:

  • EM-Synchrony - Collection of convenience classes and primitives to help untangle evented code (Ruby 1.9 + Fibers).
  • Rack-Client - Use Rack API for server, test, and client side. Supports Rack middleware!
  • Faraday - Modular HTTP client library using middleware heavily inspired by Rack.

Testing

Other libraries & applications using EM-HTTP

  • VMWare CloudFoundry - The open platform-as-a-service project
  • PubSubHubbub - Asynchronous PubSubHubbub ruby client
  • em-net-http - Monkeypatching Net::HTTP to play ball with EventMachine
  • chirpstream - EM client for Twitters Chirpstream API
  • rsolr-async - An asynchronus connection adapter for RSolr
  • Firering - Eventmachine powered Campfire API
  • RDaneel - Ruby crawler which respects robots.txt
  • em-eventsource - EventSource client for EventMachine
  • and many others.. drop me a link if you want yours included!

License

(MIT License) - Copyright (c) 2011 Ilya Grigorik

More Repositories

1

videospeed

HTML5 video speed controller (for Google Chrome)
JavaScript
3,654
star
2

ga-beacon

Google Analytics collector-as-a-service (using GA measurement protocol).
Go
3,527
star
3

gharchive.org

GH Archive is a project to record the public GitHub timeline, archive it, and make it easily accessible for further analysis.
Ruby
2,567
star
4

em-websocket

EventMachine based WebSocket server
Ruby
1,690
star
5

decisiontree

ID3-based implementation of the ML Decision Tree algorithm
Ruby
1,414
star
6

em-synchrony

Fiber aware EventMachine clients and convenience classes
Ruby
1,040
star
7

http-2

Pure Ruby implementation of HTTP/2 protocol
Ruby
876
star
8

bugspots

Implementation of simple bug prediction hotspot heuristic
Ruby
841
star
9

agent

Agent is an attempt at modelling Go-like concurrency, in Ruby
Ruby
729
star
10

em-proxy

EventMachine Proxy DSL for writing high-performance transparent / intercepting proxies in Ruby
Ruby
664
star
11

vimgolf

Real Vim ninjas count every keystroke - do you?
Ruby
632
star
12

node-spdyproxy

SPDY forwarding proxy - fast and secure
JavaScript
528
star
13

bloomfilter-rb

BloomFilter(s) in Ruby: Native counting filter + Redis counting/non-counting filters
C
468
star
14

async-rails

async Rails 3 stack demo
Ruby
467
star
15

hackernews-button

Embeddable Hacker News button + vote counter for your site
Go
417
star
16

istlsfastyet.com

Is TLS fast yet? Yes, yes it is.
HTML
417
star
17

http-client-hints

Ruby
401
star
18

spdy

SPDY is a protocol designed to reduce latency of web pages
Ruby
317
star
19

hpbn.co

High Performance Browser Networking (O'Reilly)
HTML
286
star
20

webp-detect

WebP with Accept negotiation
C++
242
star
21

zeroconf-router

Zero-config reverse proxies: let's get there!
Ruby
205
star
22

autoperf

Ruby driver for httperf - automated load and performance testing
Ruby
179
star
23

PubSubHubbub

Asynchronous PubSubHubbub Ruby Client
Ruby
174
star
24

heroku-buildpack-dart

Heroku buildpack for Dart
Shell
166
star
25

rack-speedtracer

SpeedTracer middleware for server side debugging
Ruby
156
star
26

textquery

Evaluate any text against a collection of match rules
Ruby
145
star
27

tokyo-recipes

Lean & mean Tokyo Cabinet recipes (with Lua)
Lua
144
star
28

slowgrowl

Surface slow code paths in your Rails 3 app via Growl
Ruby
117
star
29

mneme

Mneme is an HTTP web-service for recording and identifying previously seen records - aka, duplicate detection.
Ruby
108
star
30

RRRDTool

Round robin database pattern via Redis sorted sets
Ruby
79
star
31

pregel

Single-node implementation of Google's Pregel framework for graph processing.
Ruby
72
star
32

gmetric

Pure Ruby interface for generating Ganglia gmetric packets
Ruby
70
star
33

rack-aggregate

Rack response-time statistics aggregator middleware
Ruby
67
star
34

em-jack

An Evented Beanstalk Client
Ruby
65
star
35

rb-pagerank

Code from RailsConf '09 pres: Building Mini Google in Ruby
Ruby
54
star
36

closure-sprockets

Sprockets processor for Google's Closure tools
Python
54
star
37

netinfo-monitor

Displays network quality as reported by Network Information API.
JavaScript
48
star
38

shopify-core-web-vitals

This embedded app provides a report on how real-world Google Chrome users experience the Shopify-powered storefront, as captured by the Chrome UX Report, and enables the site owner to benchmark their site against a custom list of competitors.
Ruby
48
star
39

libsnappy

Snappy, a fast compressor/decompressor (courtesy of Google)
Ruby
45
star
40

hydra5

Load-balanced (multi-headed) SOCKS5 proxy
Ruby
42
star
41

zdevice

ZDevice is a Ruby DSL for assembling ZeroMQ routing devices, with support for the ZDCF configuration syntax
Ruby
42
star
42

ruby2lolz

Ruby to Lolcode translator, kthnxbai.
Ruby
38
star
43

bmr-wordcount

Browser Map-Reduce: distributed word count example
Ruby
33
star
44

em-socksify

Transparent proxy support for any EventMachine protocol
Ruby
32
star
45

resource-hints

Moved to...
JavaScript
32
star
46

gitter

XML history generator for CodeSwarm
31
star
47

em-handlersocket

EventMachine HandlerSocket MySQL plugin for direct read/write of InnoDB tables
Ruby
29
star
48

canicrawl

Hosted robots.txt permissions verifier
Go
23
star
49

udacity-webperf

JavaScript
17
star
50

omnipipe

web pipes for your browser's omnibar!
Ruby
12
star
51

issue-tracker

W3C webperf issue tracker
JavaScript
11
star
52

contextual

runtime contextual HTML autoescaper
Ruby
10
star
53

presentations

Slides, notes, code examples from some of the bigger conferences & talks.
9
star
54

performance-observer

JavaScript
7
star
55

libgeohash

Ruby FFI wrapper for libgeohash
Ruby
7
star
56

ImageQuote

Convert text quotes to images
Ruby
7
star
57

resourcehints.info

HTML
2
star
58

igrigorik

1
star