欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

相关标签: nodejs express