`

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;

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

 

分享到:
评论

相关推荐

    nodejs-learning-guide, Nodejs学习笔记以及经验总结.zip

    事件驱动意味着当特定事件发生时,程序会响应这些事件,而非阻塞I/O则意味着在等待I/O操作完成时,Node.js可以继续处理其他任务,提高了程序的效率。 在"nodejs-learning-guide"中,你可能会看到关于安装Node.js和...

    Node.js-Nodejs学习笔记以及经验总结

    本学习笔记和经验总结将深入探讨Node.js的核心概念、主要特性、常用模块以及实战技巧,帮助你从零基础到熟练掌握Node.js。 一、Node.js核心概念 1. 非阻塞I/O模型:Node.js采用事件驱动、非阻塞I/O模型,提高了...

    NodeJS学习笔记和代码

    这个"NodeJS学习笔记和代码"的压缩包显然包含了帮助初学者掌握NodeJS基础知识和实践技能的所有必要资料。 首先,`NodeJS第1天笔记.docx`很可能是对NodeJS基础概念的介绍,包括但不限于以下几点: 1. **事件驱动...

    nodejs-learning:nodejs学习笔记,总结

    Node.js的非阻塞I/O模型使得它在处理大量并发请求时表现出色。使用`http`内置模块可以创建基本的Web服务器,而`express`框架则提供了更高级的功能,如路由、中间件等,大大简化了开发流程。此外,Node.js还可以通过`...

    the-complete-nodejs-developer-course:Udemy课程中的代码,以更新nodejs

    1. **Node.js基础**:理解事件驱动的非阻塞I/O模型,安装与设置Node.js环境,编写第一个"Hello, World!"程序。 2. **模块系统**:学习Node.js的内置模块,如`fs`(文件系统)和`http`(HTTP服务器),以及如何使用`...

    nodejs-tu-example

    Node.js 使用了一个事件驱动、非阻塞 I/O 模型,使其轻量又高效,非常适合构建数据密集型的实时应用。 “瓦尔纳理工大学nodejs讲座”涵盖了以下几个关键知识点: 1. **什么是 Node.js**:Node.js 不是 JavaScript ...

    智能社石川老师nodejs经典笔记.zip

    Node.js 的核心特性之一是其事件驱动非阻塞I/O模型。在传统的多线程模型中,每个请求都需要分配一个线程来处理,而Node.js则是通过事件循环和回调函数来处理并发请求,极大地提高了系统资源的利用率。 2. **单线程...

    nodejs初学笔记大全

    - **非阻塞I/O**:通过回调函数实现非阻塞操作,提高程序执行效率。 - **JavaScript 语法**:开发者无需学习新的语言,利用 JavaScript 就可进行后端开发。 - **单线程**:Node.js 使用一个主线程处理所有请求,...

    nodejs学习源码

    这个"nodejs学习源码"压缩包很可能是包含了学习Node.js过程中的一些笔记、示例代码和项目实践,这对于初学者或者希望深入理解Node.js的人来说是非常宝贵的资源。 Node.js的核心特性包括事件驱动、非阻塞I/O模型,...

    Nodejs开发的学习笔记.rar

    这份"Nodejs开发的学习笔记"涵盖了Node.js的基础到高级应用,是学习和掌握Node.js开发的重要参考资料。 一、Node.js基础 1. 安装与环境配置:介绍如何在不同的操作系统(Windows、MacOS、Linux)上安装Node.js,...

    nodejs学习笔记之路由

    Node.js 的一个重要特性是它的事件驱动模型和非阻塞 I/O,这使得它非常适合用来构建高性能的网络应用。路由则是指根据不同的 URL 路径将请求分发到对应的处理程序。 在上述文件中,作者分享了在 Node.js 中实现简易...

    fundamentos-do-nodejs-2:GoStack-Nivel 2

    2. **事件驱动模型**:Node.js的核心在于事件循环和回调函数,这部分会解释这些概念,以及如何利用它们实现非阻塞I/O。 3. **V8引擎**:Node.js是基于Google的V8引擎构建的,会介绍V8引擎如何加速JavaScript执行。 ...

    一些NodeJS和前端的学习笔记,Koa+MongoDB+MySQL+JavaScript+Bootstrap+Re.zip

    Node.js采用事件驱动、非阻塞I/O模型,使其轻量又高效,尤其适合数据密集型实时应用。Koa是建立在Node.js上的一个Web应用框架,由Express.js的作者创建,设计思想更现代,提供了中间件系统来处理HTTP请求。 **Koa**...

    NodeJS第2天笔记1

    尽管单线程可能会让人担心其处理能力,但得益于非阻塞I/O和事件驱动的特性,Node.js 可以高效地管理多个请求,不会因为一个请求的I/O操作而阻塞其他请求的处理。 1. 单线程:Node.js 使用单个线程来服务所有客户端...

    angular-nodejs-interview

    在Node.js方面,其非阻塞I/O模型和事件驱动架构使其非常适合处理高并发的网络应用。Node.js的包管理器npm拥有世界上最大的开源库生态系统,使得开发者可以轻松地获取和使用各种第三方模块来加速开发进程。Express.js...

    HackBulgaria-NodeJS-1:HackBulgaria 的 NodeJS 课程的所有代码

    1. **Node.js 基础**:包括事件驱动编程模型、非阻塞I/O、模块系统(如 `require` 和 `exports`)、文件系统操作等。 2. **npm(Node Package Manager)**:了解如何安装、管理和发布第三方库,以及创建和管理项目...

    PluralSight-NodeJS-StarterKit:入门套件

    1. **Node.js基础**:包括Node.js的安装、命令行工具的使用、异步I/O模型、非阻塞I/O特性以及单线程与事件循环的工作原理。 2. **模块系统**:了解Node.js的`require`和`exports`/`module.exports`,以及如何组织...

    nodejs-tutorial:你好 NodeJs~

    由 Ryan Dahl 在2009年创立,Node.js 使用了一个事件驱动、非阻塞 I/O 模型,使其轻量又高效,特别适合于数据密集型的实时应用,如实时聊天、流媒体服务等。 **JavaScript 语言** JavaScript 是一种广泛应用于Web...

    corso-nodejs-2021:Corso Completo Di Node JS

    4. **异步编程**:讲解Node.js的核心特性——非阻塞I/O和事件循环,包括回调函数、Promise、async/await的使用。 5. **文件系统**:如何读写文件、目录操作以及流的概念,这些都是Node.js处理文件系统的重要部分。 ...

Global site tag (gtag.js) - Google Analytics