2011-06-27 4 views
0

JSON-RPCを使用してWebサービス用のコードを生成したいと思います。生成されたコードは、クライアントが使用するために生成されたメソッドを提供します。伝統的なJavaScriptでは、各メソッドに割り当てられたコールバックを使用すると思いますが、適切なMooToolsの方法でこれを行う方法は不明です。MooToolsを使用してJSON-RPC応答を処理する最適な方法は何ですか

var Service = new Class({ 
Implements: [Options, Events], 
options: { 
    url: 'http://localhost/lol/JSON', 
    ... 
    send: function(opts) { 
     var JSONrpc = new Request.JSON({ 
     ... 
     }); 

    JSONrpc.send(JSON.encode({'method': opts.methodname || this.options.methodname, 
           'params': opts.params || this.options.params})); 
}, 
    ... 
    //The methods to be generated 
    loginUser: function(username, password) {  
     this.send({'methodname': 'loginUser', 'params': [username, password]}); 
    }, 
    logoffUser: function(username) { 
      this.send({'methodname': 'logoffUser'}); 
    }, 
    getProfile: function(username) { 
     this.send({'methodname': 'getProfile', 'params': [username]}); 
    }, 

応答を正しく処理するにはどのような方法が最適ですか?それぞれの方法についてイベントを開催する必要がありますか?私はその呼出しを識別するためにIDを使うべきですか? これを行うMooToolsの方法は何ですか?

答えて

0

私は、this.data.methodnameを解析するイベントをディスパッチする送信および完了/成功メソッドをオーバーライドしてRequest.JSONを拡張します。そうすれば、親クラスサービスで利用できるようになります。サービスインスタンスにバブルできる場合する必要がある。

+0

私はすべての呼び出しが一意のIDを持つ配列に格納されているソリューションを考え出しました。呼び出しが返ると、配列を反復して、対応する呼び出しを検索しようとします。見つかった場合、配列からIDを削除します。このソリューションでは、生成されたメソッドごとにイベントを生成する必要がありますが、それは悪い解決策ではないと思います。それはうまく聞こえますか、それとも私はそれを別の方法で行うべきですか? – navlelo

関連する問題