nodejs实现web服务实例
程序员文章站
2024-02-01 18:27:40
...
使用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实现。
转自:http://blog.chinaunix.net/uid-52437-id-3955079.html
下一篇: Socket初步编程——简单实现群聊
推荐阅读