`
xielingjiang
  • 浏览: 33978 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

node chat 里面的http实现与express的http实现比较

阅读更多

node chat

 

node chat里面的http调用在server.js就一句话,fu.listen(PORT,HOST);

查fu.js的实现,实现逻辑跟nodejs官网的类似,主要内容有:

有一个全局变量server,直接调用createServer方法,并把逻辑放到httpServer等待callback方法:function(req,res){}

             在这个callback里面做了两件事情:

                1.对res变量绑定了simpleText和simpleJSON方法,返回text和json类型的数据给客户端。

                2.对req,res进行路由转发,转发的规则就是req.url解析出相对路径,再匹配到由get方法注册进来的handler列表上

 

nodejs官方http实现demo的关键两个方法: 一个是写头信息,一个是写body信息

 

这里顺便提一下一个很有意思的js写法。fu.staticHandler,读取静态文件给客户端请求

方法的逻辑是,传入一个带相对路径的文件名,返回一个方法,也就是handler,这个handler被get方法注册到了上面所说的handler列表了。

而fu.staticHandler本身也是一个方法,由于js里面方法即对象,所以在它里面有三个变量,body和headers数据变量和content_type文件类型变量,

它还有一个内部方法,loadResponseData,而这个方法又调用了另外一个方法fs.readFile,这个fs模块的readFIle方法又通过回调函数来共享staticHandler定义的上面的三个变量,我觉得javascript的传值方式很特别,不传值,而是传代码逻辑的方式达到传值的目的。如果用java写,我们一般会传this给这个方法,然后在自身定义这样一个回调方法,比如命名为returnData方法,然后在fs的readFile里面必须显示的调用this里面的returnData(data)这样的方式,但是this的类型必须被fs所有引用,由于javascript的弱类型语言特性,一般的代码区别如下:

 

class A{
    String body,headers;

    public void staticHandle(fileName){
       new B.readFile(fileName,this);
    }
     public void returnData(data){
        this.body=data;
    }
}

class B{
     public void readFile(fileName, A){
          String data=read(fileName);
          A.returnData(data);
    }

}
 
function A(){
    String body,headers;

   function staticHandle(fileName){
       return B.readFile(fileName,
                                 function  returnData(data){    body=data;});
    }
}

function B{
    function  readFile(fileName, callBackFunction){
          var data=read(fileName);
          callBackFunction(data);
    }

}

 

express

 

module 加载过程:express文件夹下找index.js--->lib/express.js

这个express.js导出了如下的方法:

1. createServer :对HTTP和HTTPs的封装

2. 对request和response封装,一个在lib/request.js另外一个在lib/response.js

这个request.js导出了如下方法:

req = http.IncomingMessage.prototype

req.header(name)这个基本没意义,我觉得,req.headers本来就是Map,支持搜索,无非是对大小写和referer的特殊化处理

req.params(name)对url的参数进行查询,跟上面的一样,也是对paramsMap的搜索,无意义

这个response.js导出如下方法:

res = http.ServerResponse.prototype

res.send(str) 无非是对nodejs库的writeHead和write方法的合并,没意思

 

 

 

 

分享到:
评论

相关推荐

    MERN Chat App 使用 MongoDB、Express、React 和 Node.js 提供实时消息平台

    MERN Chat App 使用 MongoDB、Express、React 和 Node.js 提供实时消息平台,实现无缝动态通信.zip

    Node.js-基于nodeexpress的聊天室

    Express 是一个简洁而灵活的 Node.js Web 应用框架,它提供了一系列强大的功能,帮助开发者快速搭建各种类型的应用,包括聊天室。 在“基于node express的聊天室”项目中,我们主要会涉及到以下几个核心知识点: 1...

    node.js+express+scoket.io聊天系统

    总结,通过Node.js、Express和Socket.IO,我们可以构建出一个实时的聊天应用,实现用户之间的即时通信和在线状态显示。这对于初学者来说是一个很好的实践项目,可以帮助他们理解和掌握这些技术的基本用法。

    Node.js-ious使用express中间件在socket.io命名空间上

    标题中的“Node.js-ious使用express中间件在socket.io命名空间上”指的是一项使用Node.js、Express框架和Socket.IO库来实现特定功能的技术实践。在这个场景中,开发者可能正在构建一个实时通信应用,比如聊天室或者...

    Node.js-NodeJSSocket.io实现的一个在线聊天室

    **Node.js与Socket.io简介** Node.js是一款基于Chrome V8引擎的JavaScript运行环境,它让JavaScript可以在服务器端执行,极大地拓宽了JavaScript的应用领域。Node.js以其事件驱动、非阻塞I/O模型而著称,使其在高...

    Node.js-socket.io实现简单的双向通信聊天功能

    而Socket.IO是Node.js的一个库,它提供了一种简单且强大的方式来实现实时、双向的通信,这在构建实时应用,如聊天、游戏或协作工具时非常有用。本篇文章将详细讲解如何利用Node.js和Socket.IO来实现一个简单的双向...

    nodejs的express实现的1对1即时通讯实例

    **Node.js与Express基础** Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许我们在服务器端使用JavaScript进行开发。Express是Node.js的一个web应用框架,提供了丰富的路由、中间件和模板引擎等功能,...

    node-chat:使用 node、express 4.x 和 socket 聊天(第一次尝试)

    "使用 node、express 4.x 和 socket 聊天(第一次尝试)" 描述了项目的核心技术栈,即 Node.js 作为后端服务器平台,Express 4.x 作为 Web 应用框架,以及 Socket.IO 用于实现实时通信。这表明开发者正在尝试构建一...

    Node.js-expresssocket.io聊天室

    标题 "Node.js-expresssocket.io聊天室" 涉及的核心技术是Node.js、Express以及Socket.IO,这些都是在Web开发领域非常重要的工具和技术。本文将详细介绍这三个关键元素以及如何利用它们构建一个实时通信的聊天室。 ...

    零基础实现node+express个性化聊天室的示例

    本篇文章使用node+express+jquery写一个个性化聊天室,一起来get一下~(源码地址见文章末尾) 效果图 项目结构 实现功能 登录检测 系统自动提示用户状态(进入/离开) 显示在线用户 支持发送和接收消息 ...

    chat-node-io-express

    标题 "chat-node-io-express" 暗示了一个基于 Node.js、Express 和 Socket.IO 的实时聊天应用程序项目。这个项目可能是遵循 Codeschool 的教程创建的,旨在帮助开发者学习如何构建一个实时交互式的网络聊天平台。 ...

    node_chat_app:多房间聊天应用

    综上所述,"Node.js 多房间聊天应用"是一个综合运用了Node.js、WebSocket、Express.js、Socket.IO等技术的实时通讯平台,实现了用户间的即时交流和多房间管理功能。通过学习和理解这个应用,开发者可以深入掌握构建...

    chatserver_rest_Chatroom_chat_源码

    1. 后端框架:可能是Node.js的Express、Java的Spring Boot或是Python的Flask等,用于快速构建RESTful API。 2. 数据库:MySQL、PostgreSQL或MongoDB等,用于存储聊天室和消息数据。 3. 消息队列:如RabbitMQ或Kafka...

    chatApp:NodeApp的chatApp Express js套接字io

    【标题】"chatApp:NodeApp的chatApp Express js套接字io" 是一个基于Node.js平台构建的实时聊天应用程序,它使用了Express.js框架和Socket.IO库来实现客户端与服务器之间的实时通信。Express.js是Node.js中最受欢迎...

    Node.js-Socket基于node.jsExpress构建

    本主题将深入探讨如何在Node.js环境中,利用Express框架与Socket.IO来构建实时交互的应用。 **Node.js简介** Node.js是一个开源、跨平台的JavaScript运行环境,它允许开发者在服务器端执行JavaScript代码。Node.js...

    使用WebRtc+node.js+express+PeerJS构建的多人即时视频通话项目源代码

    在本项目中,开发者利用了WebRTC、Node.js、Express以及PeerJS这四者结合,构建了一个多人即时视频通话的应用。下面将详细解释这些技术及其在项目中的作用。 1. WebRTC (Web Real-Time Communication): WebRTC是一...

    redis-node-express-chat:Redis 节点快速聊天示例应用

    《构建基于Redis、Node.js与Express的实时聊天应用》 在现代Web开发中,实现一个实时的聊天应用程序是一项常见的需求。本示例项目"redis-node-express-chat"为我们提供了一个利用Redis、Node.js和Express框架构建...

    node-chat:node.js与Jade,Express,Bootstrap和socket.io聊天

    node.js与Jade,Express,Bootstrap和socket.io聊天 快速开始 $ npm install $ node app.js 执照 MIT许可证(MIT) 版权所有(c)2013AndréTarnowsky 特此免费授予获得此软件和相关文档文件(“软件”)副本的...

    Node.js-node和socket.iol实现简易聊天室

    `express`是Node.js中的一个轻量级Web服务器框架,它简化了HTTP请求处理;`socket.io`用于实现实时通信;`mysql2`则用于与MySQL数据库的交互。 接下来,创建一个`server.js`文件,这是我们的主要服务器文件。导入所...

    在线聊天室(网页版,node.js和socket.io实现)

    这些依赖可能包括了Node.js的基本框架如Express,以及Socket.IO库和其他辅助工具。 然后,我们创建一个服务器端的JavaScript文件,例如`server.js`,在这里设置监听端口和初始化Socket.IO。我们需要导入`express`和...

Global site tag (gtag.js) - Google Analytics