`

nodejs 学习笔记---非阻塞请求响应

阅读更多

 

==================index.js文件=================

 

var server=require("./server");

var router=require("./router");
var requestHandlers=require("./requestHandlers");


//请示主处理程序的集合
var handle={};
handle["/"]=requestHandlers.start;
handle["/start"]=requestHandlers.start;
handle["/upload"]=requestHandlers.upload;

server.start(router.route,handle);

 

server.js文件

//get http mode
var http=require("http");
var url=require("url");


function start(route,handle){
http.createServer(function(request,response) {


var pathname=url.parse(request.url).pathname;
console.log("Request for "+pathname+" received!");
route(handle,pathname,response);
// 8080 is listening
}).listen(8080);


console.log("Server has started.");
}
exports.start=start;
======================================================================================

 

 

============requestHandler.js文件===============

var exec=require("child_process").exec;
function start(response){
console.log("===start()===");
//var content="empty";
//exec("ls=lah",function (error,stdout,stderr){
//content=stdout;

//});
//return content;
exec("find /",
{ timeout: 10000, maxBuffer: 20000*1024 },
function (error, stdout, stderr) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write(stdout);
response.end();
});

//阻塞等待10秒后返回
// function sleep(millliSeconds){
// var startTime=new Date().getTime();
// while(new Date().getTime()<startTime+millliSeconds);
// }
// sleep(10000);
// return "hello start!";
}
function upload(response){
console.log("===upload()===");
response.writeHead(200,{"Content=type":"text/plain"});
response.write("hello upload!");
response.end();
}
exports.start=start;
exports.upload=upload;

======================================================================================

===============router.js文件===============

function route(handle,pathname,response){
console.log("About to route a request for "+pathname);
if(typeof handle[pathname]=='function'){
handle[pathname](response);
}else{
console.log("no request handler found for "+pathname);
response.writeHead(404,{"Content=type":"text/plain"});
response.write("404 Not found!");
response.end();

}
}
exports.route=route;

======================================================================================

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics