1. 用户通过浏览器发送一个http的请求到指定的主机(服务器)
2.服务器接收到该请求,对该请求进行分析和处理
3.服务器处理完成以后,返回对应的数据到用户机器
4.浏览器接收服务器返回的数据,并根据接收到的进行分析和处理
由客户端发送一个http请求到指定的服务端->服务端接收请求并处理->返回数据到客户端
搭建一个http的服务器,用于处理用户发送的http请求
需要使用node提供的一个模块 http
——server.listen(porte ,[hostnamr], [backing], [callaBack])
监听客户端连接请求,只有当调用了listen方法以后,服务器才开始工作
——port: 监听的端口
——hostname: 主机名(IP/域名)
——backlog: 连接等待队列的最大长度
——callback: 调用listen方法并成功开启监听以后,会触发一个listening事件,callback将作为该事件的执行函数
服务器创建完以后,必须要监听网络,告诉它要监听哪个网卡上的数据还要指定端口
端口:任意一个进行网络数据交互的程序,数据的传输和发送都是通过电脑网卡完成,任意程序都可以监听网卡上的任意数据,但是这样会乱套,网卡是一个数据的大通道,划分端口,一个端口的数据只能被一个对应的应用程序监听,一个应用程序可以监听多个端口的数据,监听端口经常要解决冲突的问题。
listening事件:当server调用listen方法并成功开始监听以后触发的事件
err事件:当服务开启失败的时候触发的事件
request事件:当有客户端发送请求到该主机和端口的请求的时候触发
——参数request: http.IncomingMessage的一个实例,通过他我们可以获取到这次请求的一些信息,比如头信息,数据等。
—httpVersion: 使用的http协议的版本
—headers: 请求头信息中的数据
—url: 请求的地址
—method: 请求的方法
——参数responce: http.ServerResponce的一个实例,通过他我们可以向该次请求的客户端输出返回响应
—write(chunk,[encoding]): 发送一个数据块到响应正文中
—end(chunk,[encoding]): 当所有的正文和头信息发送完成以后调用该方法告诉服务器数据已经全部发送完成了,这个方法在每次完成信息发送以后必须调用,并且是最后调用。
例:
//加载一个http模块 var http = require('http'); //通过http模块下的creatServr创建并返回一个web服务器对象 var server = http.creatServer(); server.on('listening', function() { console.log('listening...'); }) server.on('request', function(req, res) { console.log('有客户端请求了'); //console.log(req); //res.write('hello'); res.writeHead('200','nana',{ 'content-type:'text/plain' }); res.write('<h1>hello<h1>'); res.end(); }) server.listen(8080, 'localhost'); //console.log(address);