【问题标题】:node.js http server takes long time to closenode.js http服务器需要很长时间才能关闭
【发布时间】:2021-07-01 16:56:03
【问题描述】:

我有 nodejs http 服务器。在发送一个请求并获得响应后,我尝试使用 server.close() 关闭它,但关闭它需要很长时间(超过 60 秒)。 可能是什么问题?

编辑

目前我正在使用chromes高级rest客户端进行测试,在收到响应后发送一个请求结果并缓慢关闭,据我所知它不应该卡在keep-alive上。 我肯定会在 response.write() 之后用 response.end() 结束我的回复。

这里有一些代码:

handleRequest = function(request, response) {
    var body = '';
    request.on('data', function (data) {
        body += data;
    });
    request.on('end', function() {
        // get some data from db...
        response.setHeader('Content-Type', 'application/json');
        response.write(result);
        response.end();
    });
});

var server = http.createServer(handleRequest);
server.listen(8000);

process.on('SIGINT', function() {
    if (server != undefined) {
        console.log("Closing Server...");
        server.close(function (e) {
            if (e) {
                throw 'Error on closing server';
            } else {
                console.log("Server closed");
            }
        });
    }
});

【问题讨论】:

  • 卡住保持连接? stackoverflow.com/q/5263716/139010
  • 如果您包含一些示例代码会很有帮助。您确定要结束回复吗?
  • 我认为您遗漏了可能导致问题的原因:"get some data from db..."
  • 我发现响应返回keep-alive,虽然我没有在任何地方设置它,可能是什么原因?

标签: node.js


【解决方案1】:

发送数据后,请检查您是否已关闭回复。

response.end()

如果这不起作用,您可以发布代码示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2020-03-10
    相关资源
    最近更新 更多