mruby-simplehttpserver is a HTTP Server with less dependency for mruby. mruby-simplehttpserver depends on mruby-io, mruby-socket and mruby-http. A Web server using mruby-simplehttpserver run on a environment which is not very rich like OSv or simple Linux box.
add conf.gem line to build_config.rb
:
MRuby::Build.new do |conf|
# ... (snip) ...
conf.gem mgem: 'mruby-simplehttpserver'
end
SimpleHttpServer class provides a HTTP Server.
SimpleHttpServer has a Rack-like interface, so you should provide an "app": an object that responds to #call
, taking the environment hash as a parameter, and returning an Array with three elements:
- HTTP Status Code
- Headers hash
- Body
The following example code can be used as the basis of a HTTP Server which returning "OK":
app = -> (env) { [200, { 'Content-Type' => 'text/plain' }, ['OK']] }
server = SimpleHttpServer.new(
host: 'localhost',
port: 8000,
app: app,
)
server.run
SimpleHttpServer#run
invokes a server that returns "OK". (If you want to stop the server, enter ^C
key.) You can see its response with curl:
$ curl localhost:8000
OK
If you see more examples, see example/server.rb.
env
, which an "app" takes as a parameter, receives a hash object includes request headers and the following parameters:
- REQUEST_METHOD ... GET, PUT, POST, DELETE and so on.
- PATH_INFO ... request path or '/'
- QUERY_STRING ... query string
- HTTP_VERSION ... 'HTTP/1.1'
If you want to see how to parse an request, see also mattn/mruby-http.
Creates a new SimpleHttpServer object.
The :server_ip
should be a DNS hostname or IP address, the :port
should be the listen port that server operates on.
If the :nonblock
is true
, take non-blocking mode. When default (nonblock = nil), it behaves blocking-mode.
The :app
should be an object that responds to #call
, taking the environment hash as a parameter, and returning an Array with three elements:
- HTTP Status Code (Integer)
- Headers hash (Hash)
- Body (Array)
it's like a Rack interface.
If you want to debug, you can set :debug
true.
A process requests on sock.
under the MIT License:
- see LICENSE file