Javascript 使用app.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) {

我正在使用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) {
        // 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请求服务的路径的某些数据结构中。假设我创建了大量的路径,并通过这种方法删除它们,那么我想这里会出现内存泄漏。是的,你完全正确。这不会删除处理程序本身。但是,首先为什么要添加大量路径?很难想象一个真实的场景中您真的需要这样做:大量不同的路径,具有完全不同的处理程序,这些处理程序必须是唯一的函数(因此您不能使用路径参数)。。。?