0

我正在使用由 Express 提供支持的 ISAM 代理应用程序(我们称之为 Proxy-APP)。ISAM 使用反向代理概念将流量重定向到后端快速应用程序(称为应用程序)。

问题:

我们有一个用 App 编写的下载功能。类似于下面:-

router.get('/fileDownload', function (req, res, next) {
  res.setHeader('Content-disposition', 'attachment;filename=' + req.query.fileName);
  request(req.query.url).pipe(res);
});

上面的代码向外部 URL 发出请求(包含一些实际文件),然后通过管道传输响应。我们在代理应用程序日志中间歇性地收到 502 Bad Gateway。

当我们收到 502 错误时有模式。如果 Proxy-App 在 2 分钟内没有收到 App 的响应,则会给出 502 错误。

我们怎样才能更有效地编写上面的代码,以便当没有响应时req.query.url我们可以处理错误。

或者

我们可以在 Proxy-App 中修改什么,以便我们可以增加 2 分钟超时。下面是 http-proxy-middleware 的上下文和选项。

  var context = '/';
  var options = {
    target: TARGET,
    changeOrigin: true,
    logLevel: 'info',
    agent: https.globalAgent,
    timeout: 3600 * 1000
  };

  var proxy = proxyMiddleware(context, options);
  app.use(proxy);

注意:以上超时对解决问题没有任何影响。

编辑:request来自 node.js 的模块。

4

1 回答 1

0

首先,ISAM 没有问题。他们回复说 502 Bad Gateway 错误来自支持的服务器。即我们的应用程序。

第一个问题是默认超时时间为 2 分钟。在节点中硬编码,请参见链接这个博客帮助我识别这一点。

但是在提高服务器/请求/响应的 setTimeout 之后,我得到文件的时间更长。基本上它没有超时。(没有 502 错误)。

这仍然没有解决我的问题。我想要它快点,而不是过了一段时间。谷歌搜索更多给了我一个名为hyperquest. 这是针对类似问题的设计。它已经提到该request模块对通过 http 传输数据有一些限制。

于 2017-10-10T04:40:57.027 回答