Authored by 周奇琪

测试回调多接口性能

node_modules/
... ...
... ... @@ -7,5 +7,8 @@
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
"license": "ISC",
"dependencies": {
"async": "^2.0.1"
}
}
... ...
... ... @@ -53,7 +53,7 @@ let client = (path) => {
req.end();
});
}
};
const server = http.createServer((req, res) => {
... ...
/**
*
*/
'use strict';
const http = require('http');
const async = require('async');
const hostname = '127.0.0.1';
const port = 3000;
const list = [
'app.product.refundExchange',
'app.shopsdecorator.getList',
'getCategory',
'h5.product.data',
'h5.product.intro',
'sortgroup',
'web.brand.banner',
'web.brand.byDomain',
'web.productBanner.data',
'web.productComfort.data',
'web.productModelcard.list',
'web.productModelTry.data'
];
let client = (path) => {
return (callback) => {
let options = {
hostname: '192.168.102.162',
port: 80,
path: path,
method: 'GET'
};
let req = http.request(options, (res) => {
// console.log(`STATUS: ${res.statusCode}`);
// console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
let ret = '';
res.on('data', (chunk) => {
ret += chunk.toString();
});
res.on('end', () => {
callback(null,JSON.parse(ret));
});
});
req.on('error', (e) => {
callback(e,null);
console.log(`problem with request: ${e.message}`);
});
req.end();
}
};
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
let calls = [];
list.forEach((val,index)=>{
let call = client(`/${val}.json`);
calls.push(call);
});
async.parallel(calls, (err,datas) => {
if(err) {
res.end(err.message);
return;
}
let ret = JSON.stringify(datas);
res.end(ret);
});
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
... ...