Nodejs 如何停止监听和释放一个端口
Nodejs 如何停止监听和释放一个端口
通过net模块的createServer和listen可以监听一个端口,那如何停止监听和释放一个端口呢?
Node.js 如何停止监听和释放一个端口
在 Node.js 中,使用 net
模块创建服务器时,可以通过调用特定的方法来停止监听并释放端口。以下是一个简单的示例,展示了如何启动和停止一个服务器。
启动服务器
首先,我们创建一个简单的 TCP 服务器:
const net = require('net');
// 创建服务器
const server = net.createServer((socket) => {
socket.write('Echo server\r\n');
socket.pipe(socket);
});
server.listen(3000, () => {
console.log('Server is listening on port 3000');
});
在这个例子中,服务器会监听 3000 端口,并且任何连接到该端口的客户端都会收到回显(即发送什么就返回什么)。
停止服务器并释放端口
要停止服务器并释放端口,我们可以使用 server.close()
方法。此外,为了确保所有已连接的客户端都断开连接,我们可以使用 server.end()
方法。
// 关闭服务器
server.close(() => {
console.log('Server has been closed');
});
server.close()
方法会关闭服务器,不再接受新的连接,但已有的连接仍然保持。如果需要强制断开所有连接,可以使用 server.end()
方法:
server.end(() => {
console.log('All connections are terminated');
});
示例代码
下面是完整的示例代码,展示了如何启动、停止和释放端口:
const net = require('net');
// 创建服务器
const server = net.createServer((socket) => {
socket.write('Echo server\r\n');
socket.pipe(socket);
});
server.listen(3000, () => {
console.log('Server is listening on port 3000');
});
// 停止服务器
setTimeout(() => {
server.close(() => {
console.log('Server has been closed');
});
}, 5000); // 5秒后关闭服务器
在这个示例中,服务器将在启动后的 5 秒后自动关闭。你可以根据实际需求调整定时器的时间。
总结
- 使用
server.close()
来停止监听端口。 - 使用
server.end()
来强制断开所有连接。 server.close()
不会立即释放端口,它只是停止接受新连接。已有的连接会继续运行直到完成。
通过这些方法,你可以灵活地管理 Node.js 服务器的生命周期,确保资源被正确释放。
你需要的是server.close([callback]吧
要停止Node.js应用对某个端口的监听并释放该端口,可以通过调用服务器实例的 close
方法来实现。close
方法会停止监听,并且在关闭连接后释放端口。
以下是一个简单的示例代码,展示了如何启动一个HTTP服务器并停止监听:
const http = require('http');
// 创建一个HTTP服务器
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
});
// 监听3000端口
server.listen(3000, () => {
console.log('Server is listening on port 3000');
});
// 停止监听并释放端口
setTimeout(() => {
server.close(() => {
console.log('Server has been closed');
});
// 如果需要再次监听同一个端口,可以重新创建服务器实例
server.listen(3000, () => {
console.log('Server is listening on port 3000 again');
});
}, 5000); // 5秒后停止监听
在这个示例中,我们首先创建了一个HTTP服务器,并让它监听3000端口。然后,我们使用 setTimeout
在5秒后调用 server.close()
方法来停止监听。server.close()
会触发 'close'
事件,表示服务器已经成功关闭所有连接并释放了端口。如果你需要再次监听同一个端口,可以在关闭服务器之后重新创建一个新的服务器实例并监听该端口。
如果希望在关闭服务器时确保所有活动连接都被正确处理,可以在 server.close()
回调中添加额外逻辑。