Reel 0.4.0: A Celluloid::IO-powered web server for Ruby with streaming and Websockets

Reel 0.4.0 (codenamed “Garbo”) is out! You can learn more about it here:

https://github.com/celluloid/reel

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:

https://github.com/celluloid/celluloid-io

Reel supports usage with Rack (and Rails) using the reel-rack gem:

https://github.com/celluloid/reel-rack

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_error callback system
  • Increase buffer size
  • Remove Reel::App (unmaintained, sorry)
  • Reel::CODENAME added (0.4.0 is “Garbo”)

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs