位置: 编程技术 - 正文

NodeJS学习笔记之网络编程(nodejs入门教程)

编辑:rootadmin

推荐整理分享NodeJS学习笔记之网络编程(nodejs入门教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs实例教程,nodejs入门,nodejs使用视频教程,nodejs基础知识,nodejs实例教程,nodejs实例教程,nodejs入门,nodejs实战教程,内容如对您有帮助,希望把文章链接给更多的朋友!

Node提供丰富的网络编程模块

Node模块 协议 net TCP dgram UDP http HTTP https HTTPS

TCP服务事件分为下面两类

(1)、服务器事件

对于通过net.createServer()创建的服务器而言,它是一个EventEmitter实例,自定义事件有以下几种:

listening :在调用listen()绑定端口或Domain Socket后触发,简写为server.listen(port, listener),通过第二个参数传入。

connection :每个客户端套接字连接到 服务器 时触发,简洁写法为通过net.createServer(),最后一个参数传递。

close :当服务器关闭时触发,在调用server.close()后,服务器将停止接受新的套接字连接,但保持当前存在的连接,等待所有连接断开后,会触发该事件。

error :当服务器发生异常时,将会触发该事件。

(2)、连接事件

服务器可以同时与多个客户端保持连接,对于每个连接而言是典型的可写可读Stream对象。Stream对象可以用于服务端和客户端之间的通信,既可以通过data事件从一端读取另一端发来的数据,也可以通过write()方法从一端向另一端发送数据。

data :当一端调用write()发送数据时,另一端会触发data事件,事件传递的数据就是write()发送的数据

end :当连接中的任意一端发送FIN数据时,将会触发该事件。

connect :该事件用于 客户端 ,当套接字与服务器连接成功时会触发。

drain :当任意一端调用write()发送数据时,当前这端触发该事件。

error :当异常发送

close :当套接字完全关闭时触发

timeout :当一定时间后连接不再活跃时,触发该事件通知用户该连接被闲置了。

TCP针对网络中的小数据包有一定优化策略:Nagle算法,当数据达到一定量后才触发。

UDP服务

UDP称为用户数据包协议,其不是面向连接的服务。Node中UDP只是一个EventEmitter实例,而非Stream的实例,具备以下自定义事件:

(1) message :当UDP套接字监听网卡端口后,接受消息时触发,触发携带的数据为消息Buffer对象和一个远程地址信息。

(2) listening :当UDP套接字开始侦听时触发该事件。

(3) close :调用close()方法时触发该事件,并不再触发message事件。若需再次触发message事件,需要重新绑定。

(4) error :当异常发生时触发,若不监听直接抛出,使进程退出。

HTTP服务

Node中http模块继承自tcp服务器(net模块),它能与多个客户端保持连接,由于其不为每个连接创建线程,保持很低的内存占用,所以能实现高并发。HTTP服务和TCP服务区别在于,在开启keepalive之后,一个TCP会话可以用于多次请求和响应。TCP服务以connection为单位进行服务,HTTP服务以request单位进行服务。http模块是将connection到request的过程进行封装。

http模块将连接所用的套接字的读写抽象为ServerRequest和ServerResponse对象,分别对应请求和响应操作。

NodeJS学习笔记之网络编程(nodejs入门教程)

(1) HTTP请求

对于TCP连接的读操作,http模块将其封装为ServerRequest对象。如报头部分req.method、req.url、req.headers,报文体数据部分抽象为一个只读的流对象,若业务逻辑需要读取报文体中的数据,则需要这个数据流结束后才能进行操作。

(2) HTTP响应

HTTP响应封装了底层连接的写操作,可以将其看成一个可写的流对象。

响应报文头部信息方法:res.setHeader()和res.writeHeader()方法,可以多次setHeader进行设置,但必须调用writeHeader写入连接才生效。

报文体部分方法:res.write()和res.end()方法

(3) HTTP服务端事件

connection :客户端与服务端建立TCP连接时,触发一次connection事件

request :建立TCP连接后,http模块底层将数据流中抽象出HTTP请求和HTTP响应,当请求数据发送到服务端,在解析出HTTP请求头后触发该事件;在res.end()后,TCP连接可用于下一次请求。

close :调用server.close方法停止接收新的连接,已有的连接都断开时触发该事件。

checkContinue :某些客户端在发送较大数据时,先发送一个头部带有Expect: -continue的请求到服务器,服务触发该事件;

connect :当客户端发起CONNECT请求时触发

upgrade :当客户端要求升级连接的协议时,需要和服务端协商,客户端会在请求头中带上Updagrade字段

clientError :连接的客户端发送错误,错误传到服务端此时触发该事件

(4) HTTP客户端

http模块提供http.request(options, connect),用于构造HTTP客户端。

HTTP客户端和服务端类似,在ClientRequest对象中,它的事件叫做response,ClientRequest在解析响应报文的时,一解析完响应头就触发response事件,同时传递一个响应对象ClientResponse供操作,后续响应报文以只读流的方式提供。

(5) HTTP客户端事件

response :与服务端的request事件对应的客户端在请求发出后得到响应时触发该事件。

socket :当底层连接池中建立的连接分配给当前请求对象时触发;

connect :当客户端向服务器发送CONNECT请求时,若服务端响应了状态码,客户端将会触发该事件。

upgrade :客户端享服务端发送Upgrade请求时,若服务端响应了 Switching Protocols状态,客户端将会触发该事件。

continue :客户端向服务端发起Expect: -continue头信息后,以试图发送较大数据,若服务端响应 continue状态,服务端将触发该事件

WebSocket服务

WebSocket最早是作为HTML5重要特性出现的,相比HTTP有以下优点:

(1) 客户端和服务端只建立一次TCP连接,可以使用更少的连接

(2) WebSocket服务端可以推送数据到客户端,这远比HTTP请求响应模式更灵活、更高效

(3) 更轻量级的协议头,减少数据传输

Node中没有内置WebSocket的库,但社区的ws模块封装了WebSocket的底层实现如著名的socket.io

如何正确使用Nodejs 的 c++ module 链接到 OpenSSL 事情的起因是这样的,因为某些原因,最近在写Nodejs的c++module,然后在js这边调用。网络通信自然离不开ssl,于是需要链接到Openssl的库。我们本来的期

Node.js插件的正确编写方式 Node.js在利用JavaScript编写后端方面效果拔群,值得我们多加尝试。不过如果大家需要一些无法直接使用的功能甚至是根本无从实现的模块使用,那么能

Nodejs+express+html5 实现拖拽上传 一、前言文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传。给用户体验带

标签: nodejs入门教程

本文链接地址:https://www.jiuchutong.com/biancheng/370846.html 转载请保留说明!

上一篇:Windows 系统下安装和部署Egret的开发环境(wind安装)

下一篇:如何正确使用Nodejs 的 c++ module 链接到 OpenSSL(如何正确使用农药芸苔素)

  • 加工企业税收优惠政策
  • 生产型企业进项税加计扣除
  • 发票冲红重开,重开时是按新税率还是旧税率
  • 固定资产清理残料变价收入
  • 100万劳务费发票多少税
  • 一正一负发票是什么意思
  • 车辆通行费属于政府性基金吗
  • 个税累计扣除项目合计2712.5是什么
  • 大票可以直接更名吗
  • 所有者投入的资本属于什么科目
  • 出口货物当期免抵退税不得免征和抵扣税额,应计入
  • 低值易耗品费用包括哪些
  • 处置使用过的固定资产,税率按多少
  • 小规模纳税人每个月需要报什么税
  • 路桥年费税额抵扣账务处理怎么做?
  • 退休人员在企业兼职规规定
  • 多开进来的发票怎么结算税点呢?
  • 支出没有发票怎么做账
  • 计提工资会计科目怎么写
  • 稳岗补贴计入哪个科目
  • 没有缴纳契税
  • 把黑龙江省
  • 旅行社成本票没有收到,怎么挂账
  • 所得税费用一年交几次
  • 企业购入存货分录
  • 未开票收入计入预收账款
  • 资本性支出计算公式为什么加折旧
  • win11最低硬件要求几代
  • 一般纳税人怎么算税
  • 2021年8月现在还能去武汉吗
  • 来电转接怎么设置空号
  • mac如何打印预览
  • PHP:oci_lob_copy()的用法_Oracle函数
  • iTunesHelper.exe是什么进程?iTunesHelper.exe系统错误怎么解决?
  • 购买财务软件申请怎么写
  • 赔偿金和违约金有什么区别
  • 收不回的应收账款会计分录
  • uniapp image mode
  • 企业清算时
  • php二维数组添加数据
  • 手把手教你用气焊视频
  • framework怎么用
  • 填报的资产总额在季初和季末存在差异是什么意思
  • 汇兑损益会计处理方法
  • 现金劳务收入会计分录
  • 去年多计提的工资今年怎么冲
  • dedecms插件
  • 非货币性资产交换是企业经常发生的
  • 应交税费的分析应重点关注企业
  • 个人社保信息变更流程
  • 银行承兑汇票进行贴现理财
  • 在mysql中设置事务保存点
  • 农民工专户个税怎么申报
  • 增值税纳税申报实训报告
  • 利息收入的会计分录
  • 公司欲购买一台设备,现在一次性
  • 外汇收入需要缴纳增值税吗
  • 房地产公司车位出租会计分录
  • 消费税什么时候计入成本
  • 对公账户转账给法人怎么做账
  • 公司建账初期做账怎么做
  • 以现金支付办公用品费440元
  • 验资 银行
  • 公司增资有什么作用
  • 日记账的设置
  • win10系统预览版
  • 电脑自建热点
  • 如何升级mac系统到10.12
  • ahqtb.exe是啥进程 ahqtb进程信息查询
  • win10 sfc命令
  • win10账户登录闪退
  • VS2013 OpenGL MFC 编程问题
  • android studio入门项目
  • JavaScipt中Function()函数的使用教程
  • js自动切换图片效果
  • 果断收藏9个Javascript代码高亮脚本
  • 延时加载js文件
  • js基础
  • 重庆国税电子税务局手机版
  • 国税账户密码在哪里能找到
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设