B/S 架构的应用程序,包含两个部分,客户端和服务端,在每一个http请求至响应的完成,产生了这多姿多彩的网页世界,所以,与B/S 架构的一切相关技术问题,都可以认为是一个http请求过程的详细解释:客户端发起请求,中间经历了域名解析,tcp握手,然后在tcp/ip 应用层,传输层,网络层,链路层进行一系列封装,传至服务器,服务器接收到请求,这个时候,服务端的路由解析,文件操作,数据库查询开始工作,经过一系列服务端工作,找到请求想要的响应,然后服务将响应发送出去,最后又到达客户端,客户端根据响应内容的不同,开始不同的客户端工作。

今天,想从一张图开始说起:

如上图所示,为一个http服务器启动之后,服务器在接收到请求之后,调用createServer的回调函数所传过去的参数

基本上,IncomingMessage 将客户端请求相关的信息带到服务端,而后服务端通过ServerResponse的一系列方法完成响应需要的数据并将响应返给客户端。服务器通过这两个对象,便能完成一次请求到响应的过程。

而Readable和Writable 则将流式api和属性分别赋予IncomingMessage 和ServerResponse,使得他们可以使用诸如end,write等方法,以及pipe管道式传输数据。

EventEmitter则实现了以事件驱动方式运行程序的这么一个过程,也是设计模式上观察者模式的实现。

其实你初次看node文档很可能会和我有一样的迷惑,其一就是IncomingMessage ,实际除了官方文档那几个属性之外,更完全的属性应该是这样子的

那么问题来了,这有什么用呢? 答案是当然有用,比如connection,可以借助此属性得到客户端ip。

到这里还得吐槽一句 node官方文档实在太坑了。

剩下的,几大类可以归结为辅助类,主要是完成加密,文件操作,子进程,集群等的操作。暂时先写到这儿。

node几个类之间的关系的更多相关文章

  1. 【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合

    java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: • 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于 ...

  2. UML类图及类与类之间的关系

    原文地址:http://www.uml.org.cn/oobject/201211231.asp 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的 ...

  3. C++面向对象高级编程(五)类与类之间的关系

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 本节主要介绍一下类与类之间的关系,也就是面向对象编程先介绍两个术语 Object Oriented Programming   OOP面向对象编 ...

  4. UML类图(二)----------类与类之间的关系之关联(聚合与组合)

    类与类之间的关系: 在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式.       1. 关联关系 关联(Association)关系是类与类之 ...

  5. Java 中类与类之间的关系

    在java中类和类之间的关系基本上有依赖.关联.聚合.组合等 一.继承关系     继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在J ...

  6. 从零开始学C++之RTTI、dynamic_cast、typeid、类与类之间的关系uml

    一.RTTI Run-time type information (RTTI) is a mechanism that allows the type of an object to be deter ...

  7. oc之封装与类之间的关系

    1. 面向对象的特征-封装? 封装: 现实生活中的封装: 将很多的小东西 塞在1个大口袋里面. 好处: a. 对外部屏蔽. b. 方便管理. 代码的封装: 函数/方法 就是1种封装的体现: 将一段代码 ...

  8. java 类与类之间的关系 及uml图

    类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(associ ...

  9. 全面解释java中StringBuilder、StringBuffer、String类之间的关系

    StringBuilder.StringBuffer.String类之间的关系 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,在上一篇博文中我 ...

  10. python之路--类与类之间的关系

    类和类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻 ...

随机推荐

  1. LocalDateTime 简述

    Java 8 更新的部分内容中,有一部分代替了以往比较难用的 java.util.Date 类,并且创建了一套新的时间类型,该类型为: java.time.LocalDateTime. LocalDa ...

  2. composer [ErrorException] Undefined index: process

    执行了升级composer self-update导致了 降级处理 composer self-update --1 composer install

  3. Qt开发经验小技巧201-205

    编译生成debug版本动态库,文件末尾自动加上d结尾. CONFIG(debug, debug|release) { win32: TARGET = $$join(TARGET,,,d) mac: T ...

  4. Qt编写的项目作品29-RTSP播放器+视频监控(海康SDK版本)

    一.功能特点 支持播放视频流和本地MP4文件. 支持句柄和回调两种模式. 多线程显示图像,不卡主界面. 自动重连网络摄像头. 可设置边框大小即偏移量和边框颜色. 可设置是否绘制OSD标签即标签文本或图 ...

  5. 部署kubernetes-dashboard改成http免密登录

    原始链接地址 https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 修改S ...

  6. OpenWrt作为旁路由配置Wireguard 实现内网穿透

    0. 前言 因为最近一直在折腾软路由相关的系统及配置,也在家里整了一套k8s的环境,有一定需求需要在外面去连这套k8s的环境作为开发环境的补充,虽然可以通过外网端口暴露的方式访问,但是还是觉得不太方便 ...

  7. 在Node.js环境下使用npm命令安装OpenLayers6.4.3时,提示错误“rollbackFailedOptional: verb npm-session”的解决办法

    该问题一般情况是因为npm源问题. 更换为淘宝的源: npm config set registry http://registry.npm.taobao.org 使用  npm info expre ...

  8. IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)

    本文由金蝶随手记技术团队丁同舟分享. 1.引言 跟移动端IM中追求数据传输效率.网络流量消耗等需求一样,随手记客户端与服务端交互的过程中,对部分数据的传输大小和效率也有较高的要求,普通的数据格式如 J ...

  9. 探索Python @dataclass的内部原理

    之前写过一篇介绍Python中dataclass的文章:<掌握python的dataclass,让你的代码更简洁优雅>. 那篇侧重于介绍dataclass的使用,今天想探索一下这个有趣的特 ...

  10. JAVA8 函数式编程(1)- Lambda表达式

    1 简介 简洁的代码就能处理大型数据集合,让复杂的集合处理算法高效的运行在多核CPU上. 面向对象编程是对数据进行抽象,而函数式编程是对行为进行抽象,能编写出更易读的代码--这种代码更多地表达了业务逻 ...