json 使用JavaScript进行RPC(远程过程调用)

omjgkv6w  于 2023-05-23  发布在  Java
关注(0)|答案(2)|浏览(198)

从网页或JavaScript代码执行RPC(远程过程调用)的最佳方式是什么?如果可能的话,我想把它保存在JavaScript中,这样我就可以对网页进行实时更新,而不必在PHP中做任何事情,以防我的服务器宕机。甚至可能向本地运行的python shell脚本发送请求……这是从JavaScript法律的吗?
我更喜欢让远程机器处理请求。我看到很多关于XMLRPC或JSONRPC如何做到这一点的讨论,但是我还没有看到任何好的例子。我猜微软建议使用他们的XMLhtprequest然而,我还没有看到任何不使用他们的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示例,可以向服务器发送请求并从服务器获取一些数据?
谢谢!

5ktev3wc

5ktev3wc1#

它几乎不会以这种方式工作:client.my_awesome_remote_function。js中没有像php中的__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 教程”。例如:http://www.w3schools.com/ajax/ajax_intro.asp(尽管w3schools不是最好的网站,在一些细节上有错误,但它仍然适合初学者)。
所有 AJAX 实现都使用现代的XMLHttpRequest和旧IE的ActiveX控件。
可以同步运行这些请求,但从用户体验的Angular 来看,这是非常糟糕的。此外,无论如何,您都需要处理回调的概念。

gk7wooem

gk7wooem2#

我创建了一个名为Furver的库,它提供了编写完整程序(具有函数组合)并在服务器端执行的功能。
您可以简单地编写一个JS模块,然后启动服务器。

npx furver server ./my-module.js

然后,您可以在初始化后使用客户端:

const api = await furver({endpoint: 'http://localhost:3000'})

await api.add(2, 3) // => 5

有关更多高级功能,请参见README.md。
Github:https://github.com/bas081/furver

相关问题