NodeJS学习笔记之网络编程_node.js(2)
request :建立TCP连接后,http模块底层将数据流中抽象出HTTP请求和HTTP响应,当请求数据发送到服务端,在解析出HTTP请求头后触发该事件;在res.end()后,TCP连接可用于下一次请求。
close :调用server.close方法停止接收新的连接,已有的连接都断开时触发该事件。
checkContinue :某些客户端在发送较大数据时,先发送一个头部带有Expect: 100-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请求时,若服务端响应了200状态码,客户端将会触发该事件。
upgrade :客户端享服务端发送Upgrade请求时,若服务端响应了101 Switching Protocols状态,客户端将会触发该事件。
continue :客户端向服务端发起Expect: 100-continue头信息后,以试图发送较大数据,若服务端响应100 continue状态,服务端将触发该事件
WebSocket服务
WebSocket最早是作为HTML5重要特性出现的,相比HTTP有以下优点:
(1) 客户端和服务端只建立一次TCP连接,可以使用更少的连接
(2) WebSocket服务端可以推送数据到客户端,这远比HTTP请求响应模式更灵活、更高效
(3) 更轻量级的协议头,减少数据传输
Node中没有内置WebSocket的库,但社区的ws模块封装了WebSocket的底层实现如著名的socket.io