GServer implements a generic server, featuring thread pool management, simple logging, and multi-server management. See HttpServer in sample/xmlrpc.rb in the Ruby standard library for an example of GServer in action.
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install gserver
Using GServer is simple. Below we implement a simple time server, run it, query it, and shut it down. Try this code in +irb+:
require 'gserver' # # A server that returns the time in seconds since 1970. # class TimeServer < def initialize(port=10001, *args) super(port, *args) end def serve(io) io.puts(Time.now.to_i) end end # Run the server with logging enabled (it's a separate thread). server = TimeServer.new server.audit = true # Turn logging on. server.start # *** Now point your browser to http://localhost:10001 to see it working *** # See if it's still running. .(10001) # -> true server.stopped? # -> false # Shut the server down gracefully. server.shutdown # Alternatively, stop it immediately. .(10001) # or, of course, "server.stop".
All the business of accepting connections and exception handling is taken care of. All we have to do is implement the method that actually serves the client.
- Fork it ( https://github.com/[my-github-username]/gserver/fork )
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create a new Pull Request