Reel 0.4.0 (codenamed “Garbo”) is out! You can learn more about it here:
Reel is an asynchronous web server based on Celluloid::IO and nio4r
which
is capable of processing multiple requests concurrently within a single
thread. You can think of it like the way EventMachine or Node.js work,
but
with Fibers to smooth out the callbacks, and Celluloid’s excellent
support
for multithreading added. You can read more about Celluloid::IO here:
Reel supports usage with Rack (and Rails) using the reel-rack gem:
This version includes three major changes from the previous:
-
Websocket API: previously Reel would automatically return a
Reel::WebSocket immediately upon a websocket connection. As of 0.4.0,
Reel
now always returns a Reel::Request object. You can check if it’s a
websocket using Reel::Request#websocket? and hijack the request into
Reel::WebSocket object using Reel::Request#websocket -
Streaming Support: Reel 0.4.0 provides a Reel::RequestBody object
which can be used for streaming requests. This object is an
Enumerable, and
also supports a #readpartial method for Socket duck type-like
behavior. -
Pipelining Support: Previously Reel only supported synchronous
request/response usage. Reel now has full support for HTTP
pipelining,
allowing multiple requests to be consumed before a response is
written.
Full changelog below:
- Rack adapter moved to the reel-rack project
- Pipelining support
- Reel::Connection#each_request for iterating through keep-alive
requests - Reel::Request#body now returns a Reel::RequestBody object instead
of a
String - New WebSocket API: obtain WebSockets through
Reel::Request#websocket
instea of through Reel::Connection#request. Allows processing of
WebSockets
throug other means than the built-in WebSocket support - Allow Reel to stop cleanly
- Remove
on_errorcallback system - Increase buffer size
- Remove Reel::App (unmaintained, sorry)
- Reel::CODENAME added (0.4.0 is “Garbo”)