github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/greeter/srv/ruby/sidecar_server.rb (about)

     1  require 'webrick'
     2  require 'securerandom'
     3  require 'net/http'
     4  require 'json'
     5  require 'json-rpc-objects/request'
     6  require 'json-rpc-objects/response'
     7  
     8  # Sidecar JSON RPC Server
     9  #
    10  # An example service ruby.micro.srv.greeter 
    11  # Registers with the sidecar 
    12  
    13  
    14  register_uri = URI("http://localhost:8081/registry")
    15  service = "ruby.micro.srv.greeter"
    16  method = "Say.Hello"
    17  host = "127.0.0.1"
    18  port = 8080
    19  
    20  server = WEBrick::HTTPServer.new :Port => port
    21  
    22  server.mount_proc '/' do |req, res|
    23    request = JsonRpcObjects::Request::parse(req.body)
    24    response = request.class::version.response::create({:msg => "hello " + request.params[0]["name"]}, nil, :id => request.id)
    25    res.body = response.to_json
    26  end
    27  
    28  trap 'INT' do server.shutdown end
    29  
    30  req = {
    31    "name" => service,
    32    "nodes" => [{
    33      "id" => service + "-" + SecureRandom.uuid,
    34      "address" => host,
    35      "port" => port
    36    }]
    37  }
    38  
    39  # register service
    40  http = Net::HTTP.new(register_uri.host, register_uri.port)
    41  request = Net::HTTP::Post.new(register_uri.request_uri)
    42  request.content_type = 'application/json'
    43  request.body = req.to_json
    44  http.request(request)
    45  
    46  server.start
    47  
    48  # degister service
    49  request = Net::HTTP::Delete.new(register_uri.request_uri)
    50  request.content_type = 'application/json'
    51  request.body = req.to_json
    52  http.request(request)
    53