Как закрыть соединение для Node.js http.createClient? - PullRequest
2 голосов
/ 27 мая 2011

Есть что-то вроде

remote_client.close()

или

request.close()

для закрытия соединения http.createClient?

Кажется, что в некоторых случаях соединение с сокетом все еще висит там после того, как событие «response» было отправлено и правильно обработано.

Ответы [ 2 ]

6 голосов
/ 27 мая 2011

Обновление до последней версии node.js (0.4.8).

Синтаксис для создания клиентов изменился. Теперь у вас есть

http.request

, который возвращает ClientRequest, который вы можете .end, и дает вам ClientResponse в обратном вызове.

ClientReponse - это просто Readable Stream, и вы можете .destroy поток

4 голосов
/ 27 мая 2011

За исключением некоторых редких и необычных обстоятельств, ваши соединения работают правильно и сами закрываются (или, точнее, будут автоматически закрываться стеком TCP операционной системы вашего компьютера.)

Проблема, с которой вы сталкиваетесь, заключается в том, что сокет, лежащий в основе соединения, будет закрыт только после того, как все его данные будут доставлены и подтверждены, а также после истечения периода TIME_WAIT. Это хорошо определенное и совершенно нормальное поведение.

Для объяснения того, почему это требуется, см.

Но суть в следующем: не беспокойтесь о розетках; это ответственность вашей операционной системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...