从网页或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示例,可以向服务器发送请求并从服务器获取一些数据?
谢谢!
2条答案
按热度按时间5ktev3wc1#
它几乎不会以这种方式工作:
client.my_awesome_remote_function
。js中没有像php中的__call
那样的魔力。此外,远程调用在js中大多是异步完成的,使用回调函数的思想,在完成某些任务后调用。你可以很容易地找到关于这个调用的教程。只要谷歌一下“ AJAX 教程”。例如:http://www.w3schools.com/ajax/ajax_intro.asp(尽管w3schools不是最好的网站,在一些细节上有错误,但它仍然适合初学者)。
所有 AJAX 实现都使用现代的XMLHttpRequest和旧IE的ActiveX控件。
可以同步运行这些请求,但从用户体验的Angular 来看,这是非常糟糕的。此外,无论如何,您都需要处理回调的概念。
gk7wooem2#
我创建了一个名为Furver的库,它提供了编写完整程序(具有函数组合)并在服务器端执行的功能。
您可以简单地编写一个JS模块,然后启动服务器。
然后,您可以在初始化后使用客户端:
有关更多高级功能,请参见README.md。
Github:https://github.com/bas081/furver