While working on the docs I wanted to be able to serve them quickly, but didn't have a Rust-based tool for it, so I wrote basic-http-server as an excuse to play with rotor. It serves static files out of the current directory over HTTP.
Here is it's --help output.
basic-http-server [FLAGS] [OPTIONS] [ARGS]
-h, --help Prints help information
-V, --version Prints version information
-a, --addr <ADDR> Sets the IP:PORT combination (default "127.0.0.1:4000")
ROOT Sets the root dir (default ".")
I've had difficulty measuring how fast it is. When I measure with wrk the results seem good, but with ab all requests timeout. I suspect that's a bug in rotor-http, but don't know.
Yes, this is a known thing. The ab sends requests with Connection: close and expects the connection to be closed when a request is done, regardless of the Content-Length and Transfer-Encoding headers. Most other tools and browsers are smart enough to respect Content-Length, so proper handling of Connection: close is hanging on my todo list.
While it's probably easy enough to fix, I'm working on client implementation of HTTP, and I hope to refactor connection state machine a little bit to reuse it for client protocol too (however, I'm not sure it's a great idea yet).
By the way, should I release current versions of rotor stuff on crates.io, so that basic-http-server could be installed by cargo install ? This might be good enough replacement for webfs or devd for some cases.