1. ホーム
  2. php

[解決済み] RPC(リモートプロシージャコール)でJavaScriptを使用する

2022-02-19 17:30:25

質問事項

ウェブページから、またはJavaScriptのコードからRPC(リモートプロシージャコール)を行うには、どのような方法が一番良いのでしょうか? 私は可能であればJavaScriptでそれを維持したいので、サーバーがダウンした場合にPHPで何もすることなくウェブページのライブアップデートを行うことができ、JavaScriptはまだページの更新を処理したい...おそらくローカルで実行中のパイソンシェルスクリプトにリクエストを送る... これはJavaScriptから合法的なのでしょうか?

私は、リモートマシンがリクエストを処理するのが好きです。 XMLRPC や JSONRPC がどのようにこれを行うかについて多くの話を見ますが、私は良い例を見たことがありません。MicrosoftはXMLhttprequestの使用を提案していると思いますが、ActiveXコールを使用せず、Internet Explorer用の特別なコードを必要としないものを見たことがありません...。私はただ、ウェブページからいくつかのpython/ruby/c++コードにコマンドを渡すためのシンプルな方法が欲しいだけです。

Pythonサーバーコード(RPCリクエストの待ち受け)。

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
def my_awesome_remote_function(str):
    return str + "awesome"
server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
server.register_function(is_even, "is_even")
server.serve_forever()

JavaScriptのコード例です。

var client = rpc.server("http://localhost:8000/");
var my_local_variable = client.my_awesome_remote_function(param);

サーバーにリクエストを送信し、サーバーからデータを取得するJSON/JavaScriptの良いサンプルはありますか?

ありがとうございました。

解決方法は?

この方法では、ほとんどうまくいきません。 client.my_awesome_remote_function . のようなjsには魔法はありません。 __call を使用します。また、jsのリモートコールは、コールバック(タスクの終了後に呼び出される関数)のアイデアを使用して、ほとんどが非同期で行われます。

var client = rpc.server("http://localhost:8000/");
var my_local_variable;
client.rpc('my_awesome_remote_function', [param], function(result) {
    my_local_variable = result;
});

このコールに関するチュートリアルは簡単に見つけることができます。ajax tutorials"でググってみてください。 例: http://www.w3schools.com/ajax/ajax_intro.asp (w3schoolsはベストなサイトではないし、細かいところで間違いがあるけれど、それでも初心者には良いサイトです).

すべてのajaxの実装は、最新のXMLHttpRequestと古いIE用のActiveXコントロールの両方を使用します。

これらのリクエストを同期的に実行することは可能ですが、ユーザーエクスペリエンスの点から非常に悪いと考えられています。また、いずれにせよコールバックの概念を扱う必要があります。