w-comor-hapi
Version:
A http communicator in nodejs and browser. Mapping functions from nodejs to other end points, like a simple RPC.
85 lines (80 loc) • 2.73 kB
JavaScript
import WComorHapiServer from './src/WComorHapiServer.mjs'
//import WComorHapiServer from './dist/w-comor-hapi-server.umd.js'
function random(min, max) {
return Math.floor(Math.random() * max) + min
}
let opt = {
port: 8080,
apiName: 'api',
authenticate: function(token) {
//使用token驗證使用者身份
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(true)
}, 1000)
})
},
filterFuncs: function(token, funcs) {
//使用token驗證使用者身份與過濾可用funcs
return new Promise(function(resolve, reject) {
funcs = funcs.filter(function(v) {
return v.indexOf('Hide') < 0
})
resolve(funcs)
})
},
onClientChange: function(clients, opt) {
console.log(`Server[port:${opt.port}] now clients: ${clients.length}`)
},
funcs: {
'group.plus': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 * p2)
}, random(100, 3000))
})
},
'group.div': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 / p2)
}, random(100, 3000))
})
},
'add': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 + p2)
}, random(100, 3000))
})
},
'addHide': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 + p2)
}, random(100, 3000))
})
},
'minu': function({ p1, p2 }) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(p1 - p2)
}, random(100, 3000))
})
},
},
routes: [
{
method: 'GET',
path: '/code',
handler: function (req, res) {
//console.log(req)
return 'get code query: ' + JSON.stringify(req.query)
//http://localhost:8080/code?a=1&bb=23.45
// => get code query: {"a":"1","bb":"23.45"}
}
},
],
}
new WComorHapiServer(opt)
//node --experimental-modules --es-module-specifier-resolution=node srv.mjs