我做错了什么? 我尝试从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和异步调用。 (如果您知道可能的话,请显示示例)
答案 0 :(得分:0)
问题是默认情况下#34;欢迎"分配给路线" /"的页面。
我不尝试使用浏览器来访问" /",但只尝试通过rpc客户端进行连接。
一些如何默认"欢迎"页面路由" /"规则不会被map("/"){...}
规则覆盖。
解决方案是重写路由规则,如map("/rpc"){...}