在用户应用程序启动之前请求它时出错

时间:2016-01-14 11:56:41

标签: javascript node.js express javascript-events node-http-proxy

我使用node-http代理模块运行带有反向代理的应用程序,该代理正在按预期工作,在某些情况下,用户希望立即运行应用程序 进程中的状态 strong>(应用程序尚未启动)并且可能需要大约3-15秒,直到应用程序启动并运行。在这种情况下,用户将从代理

获得错误
proxy.web(req, res, {
    target: 'http://' + hostname + ':' + Port
     console.log("App------------->Proxy App" );
});

proxy.on('proxyReq', function(proxyReq, req, res, options) {
    console.log("App------------->Proxy Request" );
});

  proxy.on('error', function (err, req, res) {
     console.log("App------------->Proxy Error" );
      res.end('Something went wrong');
    });

    // Listen for the `proxyRes` event on `proxy`.
    proxy.on('proxyRes', function (proxyRes, req, res) {
      console.log("App------------->Proxy Response" )
        var respState = res.statusCode
    });

如果错误,日志中的堆栈就像

  
      
  1. 代理商应用
  2.   
  3. 代理请求
  4.   
  5. 代理错误
  6.   

在这种情况下,用户将在浏览器中运行应用程序URL,并首先得到错误,几秒钟后,当他刷新浏览器时,应用程序将运行正常。 有任何建议如何解决这个问题?

我考虑构建一些用于检查 proxyRes状态的API(比如每1秒调用一次,看看响应是否为200而不是之前发送错误,如“超时检查”) 10秒后没有响应可能发送错误,但不知道如何做,如果它的好方法... 任何的想法?或者也许是通过webSoket但不知道该怎么做......

这是我使用的开源 https://github.com/nodejitsu/node-http-proxy

1 个答案:

答案 0 :(得分:1)

尝试在选项中设置proxyTimeout。此标志未记录,但在代码中使用:

https://github.com/nodejitsu/node-http-proxy/blob/master/lib/http-proxy/passes/web-incoming.js#L119

var proxy = httpProxy.createProxyServer({proxyTimeout:3000}) // timeout 3 seconds