nodejs实现web服务实例

使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值