这里主要使用的是jayson包,使用jayson实现rpc server端十分简单,如下:
var jayson = require('jayson')
// create a server
var server = jayson.server({
brest: function (args, callback) {
console.log(args)
callback(null, args[0] + args[1])
}
})
server.http().listen(3000)
这样就简单的实现了一个json rpc2.0的服务,使用postman调用测试下:
这里的rpc调用的参数在params里面,分别包含call、args两个对象,再来看下rpc server这边打印出的请求参数,可以看出callback调用后rpc服务即可正常返回数据:
使用jayson的一个简单应用场景就是:
对于一些复杂应用,前后端分离后,前端要调用部分rpc服务(可能是c++或者golang写的,当前项目服务端使用的是nodejs),因为跨域问题,前端必须请求到后端(nodejs服务端),让后端去处理请求这个rpc服务,并把结果返回给前端,相当于后端相对于真正的rpc服务只不过是一个代理转发,这时候后端可以再次生成一个rpc服务,并配置cors资源共享,前端所有rpc请求均请求到这里,然后jayson里面(好比这个brest方法里面)拿到前端的请求信息,进行一次rpc请求转发,最后将请求结果callback返回给前端即可。