Javascript 使用app.get后释放资源
我正在使用express().get from node.js以特定路径服务get请求。然而,在某个时刻,我希望不再继续在该路径上提供GET请求。我如何:Javascript 使用app.get后释放资源,javascript,node.js,Javascript,Node.js,我正在使用express().get from node.js以特定路径服务get请求。然而,在某个时刻,我希望不再继续在该路径上提供GET请求。我如何: 停止服务器接受该路径上的GET请求 释放我积累的所有资源 这是问题的简化版本 var express = require("express"); var app = express(); var http = require("http").Server(app); app.get("/", function(req, res) {
var express = require("express");
var app = express();
var http = require("http").Server(app);
app.get("/", function(req, res) {
// do some stuff
// ...
// check if we should stop serving requests here
setInterval(function() {
if (shouldBeClosed) {
// what should be here?
}
}, 1000);
});
http.listen(8080, function() { });
您可以简单地开始返回404或其他错误代码
var stop = false;
app.get("/", function(req, res) {
if (!stop) {
// do some stuff
// ...
// check if we should stop serving requests here
setInterval(function() {
if (shouldBeClosed) {
stop = true;
}
}, 1000);
} else {
res.status(404).send('nothing is here any more!');
}
});
至于第二个问题:你指的是什么样的资源?从Express 4.x开始,这个答案似乎已经过时了。据我所知,没有app.routes对象,链接到的文档也没有提到它。大概是3.0.5版本。看看所有的答案。v4.9.5版正在播放哦,糟糕。这看起来是一条路要走。我假设如果我这样做,服务器将以不同于从未存在过的路径的方式对待该路径。我猜想它仍然存在于为GET请求服务的路径的某些数据结构中。假设我创建了大量的路径,并通过这种方法删除它们,那么我想这里会出现内存泄漏。是的,你完全正确。这不会删除处理程序本身。但是,首先为什么要添加大量路径?很难想象一个真实的场景中您真的需要这样做:大量不同的路径,具有完全不同的处理程序,这些处理程序必须是唯一的函数(因此您不能使用路径参数)。。。?