我使用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
});
如果错误,日志中的堆栈就像
- 代理商应用
- 代理请求
- 代理错误
醇>
在这种情况下,用户将在浏览器中运行应用程序URL,并首先得到错误,几秒钟后,当他刷新浏览器时,应用程序将运行正常。 有任何建议如何解决这个问题?
我考虑构建一些用于检查 proxyRes状态的API(比如每1秒调用一次,看看响应是否为200而不是之前发送错误,如“超时检查”) 10秒后没有响应可能发送错误,但不知道如何做,如果它的好方法... 任何的想法?或者也许是通过webSoket但不知道该怎么做......
答案 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