Как правильно уничтожить соединение Node.js http.request? - PullRequest
4 голосов
/ 12 июля 2011

Если я запустил его в командной строке, программа остановится после 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 Ответ

5 голосов
/ 12 июля 2011

если это один запрос, вы можете просто установить shouldKeepAlive в false

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

или отправить Connection: close заголовок

Вы не можете получить доступ к сокету, потому что он отсоединен в обработчик события 'end' запроса

...