使用nodejs http.request处理ECONNREFUSED

时间:2019-09-09 13:18:01

标签: node.js express httprequest

我正在从快递后端向外部服务发出http请求。

  const options = {
    hostname: beHost,
    port: bePort,
    path: path,
    method: "GET"
  }

  var msg = http.request(options, function (error, response, body) {
    response.on('data', (d) => {
        process.stdout.write(d)
        res.send(d).status(response.statusCode)
    })
    response.on('error', (d) => {
        process.stdout.write(d)
        res.send(d).status(response.statusCode)
    })
  })
  msg.on('socket', function (socket) {
    socket.on("error", function (err) {
        console.log(err);
        res.send(err).status(408);
        msg.abort(err);
    });
    socket.setTimeout(2000, function () {
        var e = new Error('Timeout connecting to ' + beHost);
        e.name = 'Timeout';
        console.log(e);
        res.send(e).status(408);
        msg.abort();
    });
  });
  msg.end();

如果可以使用外部服务,那么一切都很好,但是如果我无法使用该服务,它将给我

Error: connect ECONNREFUSED X.X.X.X:3000

我该如何处理该错误并将503 http错误发送给客户端?

0 个答案:

没有答案