Node.js http模块学习 server对象监听服务器

1,177 阅读4分钟

本文已参与[新人创作礼]活动, 一起开启掘金创作之路。

  • request 请求: 访问路径,方法以及消息体 (✔)
  • response 响应: HTTP状态码以及消息体 (✔)
  • server.on()的相关参数 进行错误、超时、连接·····等等情况的处理

为什么要学server对象

今天我们学习http模块最后一节知识点,server对象 监听服务器。

前面,我们已经知道http.createServer()方法会返回一个server对象,同时 我们知道如何拿这个对象建立起一个简单后台接口 如何拿这个对象去绑定一个ip端口号。

来一段祖传代码 生动形象解释一下

const http = require('http'); 
// 创建http服务对象 
const server = http.createServer(); 
// 绑定事件监听 
server.on('request', (req, res) => { 
  // 此函数内容只是小小调用一下res参数让程序更加易懂的跑起来 
  // 编写响应头(不写浏览器不识别) 
  res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'}); 
  // 发送响应数据 
  res.end("<h1>欢迎使用node.js搭建服务</h1>"); 
}); 
// 绑定端口号 
server.listen(8888);

\
作者:冰镇生鲜\
链接:https://juejin.cn/post/7130883570365087751\
来源:稀土掘金\
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

然后后面我们嫌弃server对象创建网络服务的代码过程过于繁琐,直接一套广播体操给咔咔了 把它换成

var http = require('http')

// 创建服务器
http.createServer( (req, res) =>{  
    // 永远相信美好的事情即将发送
 }).listen(8888);

其实server对象的功能十分强大,除了上述的server.on('request',callback回调)

我们还可以利用这个server对象我们可以做很多事情

比如监听服务器

  • 监听 服务器错误 server.on('error',callback回调函数)
  • 监听 服务器与客户端连接 server.on('connection',callback回调函数)
  • 监听 服务器超时 server.on('timeout',callback回调函数)
  • 监听 服务器启动 server.on('start',callback回调函数)
  • 监听 服务器关闭 server.on('listening',callback回调函数)

最近在工地搬砖忙着打工挣钱,太晚了,困死,明天回来继续码文填坑···········

监听错误

这里创建分别创建两个htp接口进行测试:

image.png

对应的代码如下:

1号http接口.js的代码


// 1号http接口.js的代码
// 首先导入http模块
const http = require('http'); 
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (request, respond) => {  
    // 编写响应头(不写浏览器不识别)
    respond.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
    // 发送响应数据
    respond.end("正在访问一号http接口的8080端口"); 
})
server.listen(8080);

console.log('您的http服务启动在  http://127.0.0.1:8080/');

2号http接口.js的代码


// 2号http接口.js的代码
// 首先导入http模块
const http = require('http'); 
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (request, respond) => {  
    // 编写响应头(不写浏览器不识别)
    respond.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
    // 发送响应数据
    respond.end("正在访问2号http接口的8080端口"); 
})
// 监听错误
server.on('error',(e) => { 
    console.log('2号http接口出现错误!')
    console.log(e)
    if (e.code == 'EADDRINUSE') {
      console.log(e.port+'端口号已经被占用')
    }
})
server.listen(8080);

console.log('您的http服务启动在  http://127.0.0.1:8080/');

首先node 1号http接口.js的代码,然后再运行2号http接口的代码:

image.png

监听客户端连接

// 首先导入http模块
const http = require('http'); 
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (request, respond) => {  
    // 编写响应头(不写浏览器不识别)
    respond.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
    // 发送响应数据
    respond.end("正在访问一号http接口的8080端口"); 
})

server.on('connection', () => {
  console.log("有客户端连接进来")
})

server.listen(8080);

console.log('您的http服务启动在  http://127.0.0.1:8080/');

随便打开浏览器几个页面访问我们的http接口

image.png

可以看到终端打印了如下内容:

image.png

当然,你也可以在回调函数里面加上参数,打印这个参数,看看具体内容。

server.on('connection', (c) => {
  console.log("有客户端连接进来")
  console.log(c)
})

image.png

监听关闭与启动,以及主动关闭服务器

// 首先导入http模块
const http = require('http'); 
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (request, respond) => {  
    // 编写响应头(不写浏览器不识别)
    respond.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
    // 发送响应数据
    respond.end("偷连我接口,给你闭了");
    server.close()
})

server.on('listening', () => {
  console.log("服务器启动成功")
})

server.on('close', () => {
    console.log("服务器关闭")
})

server.listen(8080);

console.log('您的http服务启动在  http://127.0.0.1:8080/');

image.png

image.png

好,以上就是关于server对象的妙用详解,关注本帅比,带你学更多有趣的node知识。