使用nodejs,采用express是一个很好的选择,也可自己采用http库直接实现。该列子通过简单的事件,把数据粘起来,从而能应对post模式中大数据传输的要求。
-
var http = require('http');
-
var url = require('url');
-
-
-
function test1(receiveBuf, res){
-
//do something
-
res.end('====>set ok Hello World 1\n');
-
}
-
-
function test2(receiveBuf,res){
-
//do something
-
res.end('====>set ok Hello World 2 \n');
-
}
-
-
var PATH_MAP = {};
-
PATH_MAP["/ydsdk_call.php"] = test1;
-
PATH_MAP["/ydsdk_get.php"] = test22;
-
-
var Server = http.createServer(function (req, res) {
-
var receiveBuf = '';
-
-
//url.parse(req.url).pathname; //建议自己实现解析,url.parse函数性能低
-
var pathname = url.parse(req.url).pathname;
-
var fun = PATH_MAP[pathname];
-
if (typeof(fun)=="undefined" || fun==null) {
-
return ;
-
}
-
-
req.setEncoding('utf8');
-
-
req.addListener('data', function(Data) {
-
receiveBuf += Data;
-
});
-
-
res.writeHead(200, {'Content-Type': 'text/plain'});
-
-
-
res.on("close",function(){
-
console.log("res closed");
-
});
-
-
req.on("close",function(){
-
console.log("req closed");
-
});
-
-
-
req.addListener('end', function() {
-
fun(receiveBuf,res);
-
});
-
-
-
});
-
-
Server.listen(8082, '172.28.14.218',1024);
-
-
-
Server.setTimeout(60000,function(cli){
-
cli.end('timeout\n');
-
});
关于上面列子,可满足较高并发。
若提高并发访问要注意3点:
1)优化系统,centos下主要是sysctl.conf;
2)提高cpu,因为nodejs的弱点就是cpu密集;
3)js脚本编写要注意效率,主要要注意时间复杂度,复杂算法尽量用c实现。
阅读(10073) | 评论(0) | 转发(1) |