2016-05-22 10 views
0

私は間違っていますか? json-rpcのドキュメントからサンプルコードを実行しようとしています。 Together with EventMachine: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 

このサーバーコンソールにエラーはありません。 結果は、JSON-RPCクライアント上のトランスポート層の上にある次のとおりです。

500 Internal Server Error 

私はjimsonの宝石implememtationと同じクライアントを試してみました - それは正常に動作しますがEventMachineおよび非同期呼び出しをサポートしていません。 (可能であれば例を示してください)

答えて

0

問題は、デフォルトでは "/"ルートに割り当てられた "ウェルカム"ページにありました。 ブラウザで「/」に行こうとはしませんが、rpcクライアントで接続しようとします。 デフォルトの "welcome"ページルート "/"ルールは、map("/"){...}ルールによって上書きされません。

解決策は、このような書き換えルートルールです。map("/rpc"){...}

関連する問題