如何很好地销毁Node.js http.request连接?

时间:2011-07-12 02:03:47

标签: http node.js request destroy

如果我在命令行中运行它,程序将在client.destroy();

之后停止
var client = http.get(options, 
        function(res) {
            console.log(res.statusCode);
            client.destroy();
          }
);

但是,当我将client.destroy()放在res.on('end')中时,情况并非如此:

var client = http.get(options, 
        function(res) {
            console.log(res.statusCode);
            res.on('end', function() {
                console.log("done");
                client.destroy();
            });
          }
);

它将抛出异常,因为http.socket为null。所以,我无法摧毁它。

在这种情况下,程序执行将挂起并且不会结束。我能做些什么来阻止它? (除了process.exit());

1 个答案:

答案 0 :(得分:5)

如果是单个请求,您可以将shouldKeepAlive设置为false

var request = http.get(options, 
        function(res) {
            console.log(res.statusCode);
          }
);
request.shouldKeepAlive = false

或发送Connection: close标题

您无法访问套接字,因为它是detached

中的the request 'end' event handler