我正在node.js上使用http代理。我有一个到另一个服务器的代理请求。我的要求是代理请求应该在10秒内超时。另外,当超时发生时,我应该能够向用户显示自定义消息
我有下面的代码

var proxy = new httpProxy.RoutingProxy();
  req.on('error', function (err,req,res){
       res.send("An error occured");
  });
  proxy.proxyRequest(req, res, {
    host: 'localhost',
    port: port,
    headers:req.headers,
    timeout:10000
  })

这将设置超时(由于未知原因,它将在17秒后超时),但永远不会执行回调。它只是显示标准的浏览器消息
The connection was reset
          The connection to the server was reset while the page was loading.

提前谢谢
更新:
我试过了
proxy.on('proxyError', function (err,preq,pres) {
    pres.writeHead(500, { 'Content-Type': 'text/plain' });
    pres.write("An error happened at server. Please contact your administrator.");
    pres.end();
  });

这次调用该方法,但它抱怨响应已经发送,因此无法设置头

最佳答案

您可能想试试这个:

proxy.on('error', function(err, preq, pres){
    pres.writeHead(500, { 'Content-Type': 'text/plain' });
    pres.write("An error happened at server. Please contact your administrator.");
    pres.end();
});

07-28 09:54