繁体   English   中英

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

[英]What's the proper way of terminating a Node.js server request?

我正在玩一个基本的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();
    });
});

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

编辑:我将if正文更改为:

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

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

您应该调用req.abort();

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

您必须返回任何结果。 这只是正确的方法。 您的客户端向服务器发送请求,因此需要回答。 可以是状态400,但必须是。 换句话说,您的客户端将永远不会意识到请求已被终止,从而降低了您的应用程序的速度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM