README.md in ftw-0.0.7 vs README.md in ftw-0.0.8
- old
+ new
@@ -60,29 +60,38 @@
puts :received => message
end
## Server API
-Not sure yet...
+I have implemented a rack server, Rack::Handler::FTW. It does not comply fully
+with the Rack spec. See 'Rack Compliance Issues' below.
-Since Rack is not supported, I'll have to do a lot of legwork myself.
+Under the FTW rack handler, there is an environment variable added,
+"ftw.connection". This will be a FTW::Connection you can use for CONNECT,
+Upgrades, etc.
-* Implement a proper Socket Server api
-* Implement a HTTP server on top of that (add SPDY support later)
-* Implement a Sinatra-like DSL on top of HTTP
+There's also a websockets wrapper, FTW::WebSockets::Rack, that will help you
+specifically with websocket requests and such.
+## Rack Compliance issues
+
+Due to some awkward and bad requirements - specifically those around the
+specified behavior of 'rack.input' - I can't support the rack specification fully.
+
+The 'rack.input' must be an IO-like object supporting #rewind which rewinds to
+the beginning of the request.
+
+For high-data connections (like uploads, HTTP CONNECT, and HTTP Upgrade), it's
+not practical to hold the entire history of time in a buffer. We'll run out of
+memory, you crazy!
+
+Details here: https://github.com/rack/rack/issues/347
+
## Other Projects
Here are some related projects that I have no affiliation with:
* https://github.com/igrigorik/em-websocket - websocket server for eventmachine
* https://github.com/faye/faye - pubsub for the web (includes a websockets implementation)
* https://github.com/lifo/cramp - real-time web framework (async, websockets)
* https://github.com/igrigorik/em-http-request - HTTP client for EventMachine
* https://github.com/geemus/excon - http client library
-
-## Missing Features
-
-* No Rack support, for now. There are technical requirements the Rack SPEC that
- prevent rack applications from really servicing uploads, HTTP Upgrades, etc.
- Details here: https://github.com/rack/rack/issues/347
-