node.js остаточный клиент сбой после выключения сервера

У меня есть вопрос о восстановлении клиента node.js. Итак, я делаю запрос на сервер и получаю ответ (он хорошо печатается на консоли), но когда я выключаю свой сервер, мой оставшийся клиент вылетает с ошибкой:

events.js:72
        throw er; // Unhandled 'error event
              ^
Error: read ECONNRESET
    at errnoException (net.js:901:11
    at TCP.onread (net.js:556:19

Мой код прост:

var restify = require('restify');

// Creates a JSON client
var client = restify.createJsonClient({
  url: 'http://127.0.0.1:3000/api/check'
});

client.get('', function(err, req, res, obj) {    
  console.log(obj);  // print response
});

Мой сервер также написан на node.js и использует экспресс-фреймворк и стандартный API, который месяцами работает на производстве, поэтому я сомневаюсь, что это проблема. Похоже, клиент не закрыл TCP-соединение с сервером, но в учебниках по восстановлению я не нашел инструкций для этого.

Спасибо за любую информацию!


person Ivan Longin    schedule 19.06.2013    source источник
comment
Я думаю, что он не покажет предопределенную ошибку, если вы обработаете ее в server.on('disconnect',function(){.....}); Поправьте меня, если я ошибаюсь   -  person sumitb.mdi    schedule 19.06.2013
comment
@sumitb.mdi Он спрашивает о клиенте.   -  person Joachim Isaksson    schedule 19.06.2013
comment
Я не могу повторить... какую версию узла вы используете?   -  person Joachim Isaksson    schedule 19.06.2013


Ответы (1)


Добавьте agent: false к созданию вашего json-клиента:

var client = restify.createJsonClient({
    url: 'http://127.0.0.1:3000/api/check',
    agent: false
});

Таким образом, TCP-соединение будет закрываться каждый раз, и вы не получите сообщение об ошибке, если сервер будет закрыт после того, как вы получите свой ответ.

person gfpacheco    schedule 30.01.2014