MessagePack-RPC over HTTP (Ruby)
This library provides MessagePack-RPC via HTTP as XML-RPC. The original MessagePack-RPC Server in Ruby is not good in some cases. It doesn't scale. It's incompatible with Thread. There is no decent termination processing...
We alreadly have various high perfomance HTTP servers. We can use these in MessagePack-RPC over HTTP.
There is no compatibility with other implementation of normal MessagePack-RPC (not over HTTP). So a normal RPC client can not connect a HTTP server.
require 'msgpack-rpc-over-http' class MyHandler def add(x,y) return x+y end end run MessagePack::RPCOverHTTP::Server.app(MyHandler.new)
% rackup config.ru -s thin >> Thin web server (v1.5.0 codename Knife) >> Maximum connections set to 1024 >> Listening on 0.0.0.0:9292, CTRL+C to stop
require 'msgpack-rpc-over-http' c = MessagePack::RPCOverHTTP::Client.new("http://0.0.0.0:9292/") result = c.call(:add, 1, 2) #=> 3
Support streaming response via Chunked Transfer-Encoding.
# server side class Handler include MessagePack::RPCOverHTTP::Server::Streamer def log return stream do File.open('/var/log/syslog') do |f| while line = f.gets.chomp # write a chunked data chunk(line) end end end end end # client client = MessagePack::RPCOverHTTP::Client.new("http://0.0.0.0:80/") client.stream do |line| p line # => "Nov 3 ..." end
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install msgpack-rpc-over-http
TODO: Write usage instructions here
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Added some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request