远程过程调用 - RPC
Meteor平台已经预置了DDP协议的完整实现,因此我们只需要调用相应的API就可以实现 远程过程调用。
≡ 服务端/后端 —— 定义远程过程
调用Meteor.methods(methods)方法进行服务端远程过程的定义。参数methods是一个 JS对象,其属性表示过程名,对应的值函数就是远程过程的实现函数。
下面的代码实现了一个用来计算员工薪酬的远程过程,尽管计算逻辑相当地不逼近实用系统, 但请关注我们将其抽象为服务端的一个远程服务的思路:
//server side
Meteor.methods({
'calcSalary':function(name){
//喜欢的三个员工给多点
if(name==='Mary') return 100000.00;
if(name==='Linda') return 50000.00;
if(name==='Tommy') return 78000.00;
//其他员工都给一样的薪酬
return 15000.00;
}
});
≡ 客户端/前端 —— 调用远程过程
在客户端调用Meteor.call(name,[arg1,arg2],[asyncCallback])方法调用远程过程:
//client side
//异步调用,调用结果或错误将被传入回调函数
Meteor.call("calcSalary","Mary",function(error,result){
$("body").html("result is " + result);
});
另一种调用方法是使用Meteor.apply()方法执行远程过程。apply()和call()的 用法差不多,只是参数需要以数组形式传入,并且有一些附加的调用选项。有兴趣的话可以 查阅文档
执行以下命令复位test应用、删除源文件:
~/test$ meteor reset↵
~/test$ rm -rf \*↵
拷贝rpc示例代码,运行并查看运行结果:
~/test$ cp ~/demos/rpc/* .↵
~/test$ meteor↵
理解并修改rpc示例代码,通过练习掌握Meteor平台下RPC的使用方法。