📅  最后修改于: 2023-12-03 15:33:09.918000             🧑  作者: Mango
在 Node.js 中,server.close()
方法可以关闭一个正在运行的 HTTP 或 HTTPS 服务器。该方法会停止服务器接收新的连接,并安全地关闭现有的连接。
server.close([callback])
参数:
callback
:可选,一个回调函数,在服务器完全关闭后执行。首先,我们需要创建一个 HTTP 服务器:
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
});
server.listen(8080, () => {
console.log('Server is running on port 8080.');
});
然后,我们可以使用 server.close()
方法关闭该服务器:
server.close(() => {
console.log('Server has been closed.');
});
在上述代码中,我们通过传递一个回调函数来捕获服务器完全关闭后的事件。 server.close()
方法会立即停止服务器接收新的连接,并等待现有连接关闭。请注意,该方法并不会立即终止正在运行的请求,而是会等到所有请求都得到处理为止。
下面我们来看一个示例,我们通过 setTimeout()
函数来模拟服务器一段时间后关闭,然后在关闭之前我们向该服务器发送请求,以验证关闭前后该服务器的状态。
const http = require('http');
const server = http.createServer((req, res) => {
console.log('Received a request.');
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
});
server.listen(8080, () => {
console.log('Server is running on port 8080.');
setTimeout(() => {
server.close(() => {
console.log('Server has been closed.');
});
}, 5000); // 模拟5秒后关闭服务器
});
http.get('http://localhost:8080', (res) => {
console.log(`Got response: ${res.statusCode}`);
res.on('data', (chunk) => {
console.log(`Received data: ${chunk}`);
});
res.on('end', () => {
console.log('Response ended.');
});
}).on('error', (err) => {
console.log(`Got error: ${err.message}`);
});
该示例中,我们首先创建了一个 HTTP 服务器,并通过 setTimeout()
函数模拟了5秒后关闭该服务器。在服务器关闭之前,我们向该服务器发送了一个 HTTP 请求。当服务器关闭时,我们可以看到“Received a request.”的输出不再出现,这表明服务器已经停止接收新的请求。同时,由于现有请求还没有完成,我们可以看到相应的响应数据被正常地执行,直至响应结束。
server.close()
方法是一个常用的方法,可以帮助我们关闭一个正在运行的 HTTP 或 HTTPS 服务器。当我们需要修改服务器配置或停止服务器时,该方法可以很方便地调用,以确保操作成功且安全。