专栏名称: 似朝朝我心
一个慢慢学习前端的小pan,路漫漫其修远兮,...
目录
相关文章推荐
51好读  ›  专栏  ›  似朝朝我心

node构建一个简单的web服务器(http服务器)

似朝朝我心  · 简书  ·  · 2020-11-03 23:46

正文

在node中专门提供了一个核心模块:http,http这个模块的职责就是用来帮助我们创建编写服务器的

1.加载 http 核心模块。

const http = require('http')

2.使用 http.createServer() 方法创建一个web服务器。

  • 返回的是一个Server实例。
const server = http.createServer()

3.服务器自己要干嘛?或者说它要走什么样的一个流程?

具体操作如下:

  • 提供对数据的服务。
  • 发送请求。
  • 接收请求。
  • 处理请求。
  • 给个反馈(发送响应机制)
  • 注册 request 请求事件,当客户端发送请求过来,就会自动触发服务器的 request 请求事件,然后执行第二个参数(即回调处理函数) 。
//监听request请求事件,设置请求处理函数。
server.on('request', () => {
    console.log('收到客户端发送过来的请求了!')
})

4.绑定(监听)端口号(端口号必须得有,默认是80端口,端口号上限是65535),启动服务器,打印日志信息。

server.listen(8081, () => {
    console.log('服务器启动成功,你可以通过 http://127.0.0.1:8081/ 来进行访问')
})
  • 到这一步的话,服务器可以开启成功,但服务器不会有任何的响应,浏览器会处于等待状态,页面一直处于正在加载。


5.继续完善我们的服务器,回到request事件处理函数。

request 事件处理函数,需要接收2个参数:分别是request、response。

  • request(即请求对象):请求对象可以用来获取客户端的一些请求信息,例如请求路径等。
server.on('request', (request, response) => {
    console.log(`收到客户端发送过来的请求了!请求路径是${request.url}`)
})
  • response(即响应对象):响应对象可以用来给客户端发送响应信息。

response对象有一个write()方法,可以用来给客户端发送响应数据信息,write()方法可使用多次。

但是最后一定一定要使用end()方法来结束响应(告诉客户端,我话说完了,你可以把数据呈现给用户界面了),否则客户端会一直处于等待状态。

server.on('request', (request, response) => {
    console.log(`收到客户端发送过来的请求了!请求路径是${request.url}`)
    response.write('hello! ')
    response.write('the world is beautiful')
    response.end()
})

上面的write()方法输入内容,我们一般很少用,我们还有更简单的方式,可以在直接end()的同时写入内容,实现的效果是一样的。

response.end('hello! the world is beautiful')

到这一步,我们不难发现我们当前的服务器的能力非常的弱,无论我们请求的是哪个路径,都只能响应hello! the world is beautiful内容。


所以我们要做的就是,我们希望请求不同的路径的时候,响应不同的结果。






请到「今天看啥」查看全文