UNPKG

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.67 kB
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 srv.mjs