@vapormask/json-rpc-engine
v2.0.0
Published
a tool for processing JSON RPC
Downloads
2
Readme
RpcEngine
a tool for processing JSON RPC
usage
const RpcEngine = require('rpc-engine')
let engine = new RpcEngine()
Build a stack of json rpc processors by pushing in RpcEngine middleware.
engine.push(function(req, res, next, end){
res.result = 42
end()
})
JSON RPC are handled asynchronously, stepping down the stack until complete.
let request = { id: 1, jsonrpc: '2.0', method: 'hello' }
engine.handle(request, function(err, res){
// do something with res.result
})
RpcEngine middleware has direct access to the request and response objects.
It can let processing continue down the stack with next()
or complete the request with end()
.
engine.push(function(req, res, next, end){
if (req.skipCache) return next()
res.result = getResultFromCache(req)
end()
})
By passing a 'return handler' to the next
function, you can get a peek at the result before it returns.
engine.push(function(req, res, next, end){
next(function(cb){
insertIntoCache(res, cb)
})
})
RpcEngines can be nested by converting them to middleware engine.asMiddleware()
let engine = new RpcEngine()
let subengine = new RpcEngine()
engine.push(subengine.asMiddleware())
gotchas
Handle errors via end(err)
, NOT next(err)
.
/* INCORRECT */
engine.push(function(req, res, next, end){
next(new Error())
})
/* CORRECT */
engine.push(function(req, res, next, end){
end(new Error())
})