Skip to content
Simple Ruby gem for JSON RPC 2.0 client and server via zeroMQ.
Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
test
.gitignore
Gemfile
Gemfile.lock
README.md
Rakefile
Vagrantfile
zmqjsonrpc.gemspec

README.md

zmqjsonrpc Gem Version

This gem implements a very simple JSON RPC 2.0 client and server which uses zeroMQ for transport. Please install libzmq, e.g. via apt-get install libzmq3-dev.

Let's not talk too much, let's see some code:

  require 'rubygems'
  require 'zmqjsonrpc'
  
  # client request to a running server
  client = ZmqJsonRpc::Client.new("tcp://127.0.0.1:49200")
  client.some_method(1, "b", [1,{a:1}])

  # -or- a client with logger and error handling
  require 'logger'
  logger = Logger.new(STDOUT)
  client = ZmqJsonRpc::Client.new("tcp://127.0.0.1:49200", 10000, loggger)
  begin
    client.faulty_method()
  rescue ZmqJsonRpc::ClientError => e
    puts "bad things can happen..."
  end
  require 'rubygems'
  require 'zmqjsonrpc'

  class Proxy
    def some_method(a,b,c)
      # do you thing
      return ["xyz", 77]
    end
  end

  # blocking server
  proxy = Proxy.new()
  server = ZmqJsonRpc::Server.new(proxy, "tcp://*:49200")
  server.server_loop

  # -or- a server with your own logger
  require 'logger'
  logger = Logger.new(STDOUT)
  # ...
  server = ZmqJsonRpc::Server.new(proxy, "tcp://*:49200", logger)

  
  # -or- dispatch a thread
  server = ZmqJsonRpc::Server.new(proxy, "tcp://*:49200")
  thread = Thread.new {
    server.server_loop
  }
  # and cancel the thread if you want to shut the server down
  thread.exit

Resources

Stuff left to do

  • Add support for by-name parameters (see the spec)
  • Add individual exception classes in the client.
  • Send different error codes if something goes wrong in the server.
  • Keep the client connection alive instead of re-establishing every time.
  • Add more tests.

License

This code is released under the terms of MIT License.

Contribute

Please do so! Just send a message or send a pull request. Especially, adding webrick for transport would be nice.

You can’t perform that action at this time.