什么是终止Node.js服务器请求的正确方法?

时间:2015-04-01 23:29:40

标签: javascript node.js http

我正在玩一个基本的Node.js服务器(没有框架)。我希望服务器在某些条件下终止请求。这样做的正确方法是什么?我尝试了request.connection.destroy()req.removeListener('data')req.removeListener('end'),但服务器继续运行并返回结果。这是我所拥有的一部分:

http.createServer(function(req,res){
    req.on('data',function(data){
        content+=data;
        if(condition){
            req.connection.destroy();
            req.removeListener('data');
            req.removeListener('end');
        }
    });

    req.on('end',function(){=
        res.writeHead(200,{
            'Context-Type':'text/plain',
        });
        res.write(content);
        res.end();
    });
});

P.S。不是req.once('end',...)而不是req.on('end',...)更好吗?其他人似乎都使用on(),这是否有原因?

修改 我将if正文更改为:

                req.abort();
                req.connection.destroy();
                req.removeAllListeners('data');
                req.removeAllListeners('end');

但是,仍然会调用end事件(即content仍在编写中)。

2 个答案:

答案 0 :(得分:1)

你应该调用req.abort();

此处的文档: https://nodejs.org/api/http.html#http_request_abort

答案 1 :(得分:0)

您必须返回任何结果。这只是正确的方法。您的客户端向服务器发送请求,因此需要回答。它可以是状态400但必须是。另一方面,您的客户端永远不会意识到请求已被终止并使您的应用程序变慢。