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