json-rpc事件 - 机器独立服务

时间:2016-05-22 18:00:13

标签: ruby-on-rails ruby

我做错了什么? 我尝试从json-rpc文档运行示例代码。使用EventMachine进行Togather:

['Carbon', 'Carbon.Files', '_scproxy', '_sysconfigdata', 'builder.ParserRejected
Markup', 'builder.builder_registry', 'cchardet', 'chardet', 'defusedexpat', 'htm
l.parser', 'html5lib', 'html5lib.constants', 'http.client', 'iconv_codec', 'lxml
', 'ordereddict', 'urllib.parse', 'win32pipe', 'winreg']['Carbon', 'Carbon.Files', '_scproxy', '_sysconfigdata', 'builder.ParserRejected
Markup', 'builder.builder_registry', 'cchardet', 'chardet', 'defusedexpat', 'htm
l.parser', 'html5lib', 'html5lib.constants', 'http.client', 'iconv_codec', 'lxml
', 'ordereddict', 'urllib.parse', 'win32pipe', 'winreg']

此服务器控制台上没有错误。 结果是json-rpc客户端上的传输层是:

require 'json-rpc'
require 'thin'

class AsyncApp
  include JsonRpc
  AsyncResponse = [-1, {}, []].freeze
  def call env
    rpc_call(env)
  end

  def rpc_sum a, b
    result = Rpc::AsyncResult.new
    EventMachine::next_tick do
      result.reply a + b
      result.succeed
    end
    result
  end
end

EM::run do
  Thin::Server.start('0.0.0.0', 8999) do
    map('/'){ run AsyncApp.new }
  end
end

我使用jimson gem实现尝试相同的客户端 - 它工作正常,但不支持EventMachine和异步调用。 (如果您知道可能的话,请显示示例)

1 个答案:

答案 0 :(得分:0)

问题是默认情况下#34;欢迎"分配给路线" /"的页面。 我不尝试使用浏览器来访问" /",但只尝试通过rpc客户端进行连接。 一些如何默认"欢迎"页面路由" /"规则不会被map("/"){...}规则覆盖。

解决方案是重写路由规则,如map("/rpc"){...}