本文已参与[新人创作礼]活动, 一起开启掘金创作之路。
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接口进行测试:
对应的代码如下:
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接口的代码:
监听客户端连接
// 首先导入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接口
可以看到终端打印了如下内容:
当然,你也可以在回调函数里面加上参数,打印这个参数,看看具体内容。
server.on('connection', (c) => {
console.log("有客户端连接进来")
console.log(c)
})
监听关闭与启动,以及主动关闭服务器
// 首先导入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/');
好,以上就是关于server对象的妙用详解,关注本帅比,带你学更多有趣的node知识。