這里主要使用的是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返回給前端即可。