Javascript 在启动用户应用程序之前请求用户应用程序时出错
我使用node http proxy模块使用反向代理运行应用程序,反向代理按预期工作,在某些情况下,用户希望立即运行应用程序,,该应用程序的状态为进度(应用程序尚未启动),并且可能需要大约3-15秒,直到应用程序启动并运行。在这种情况下,用户将从代理中获得错误Javascript 在启动用户应用程序之前请求用户应用程序时出错,javascript,node.js,express,javascript-events,node-http-proxy,Javascript,Node.js,Express,Javascript Events,Node Http Proxy,我使用node http proxy模块使用反向代理运行应用程序,反向代理按预期工作,在某些情况下,用户希望立即运行应用程序,,该应用程序的状态为进度(应用程序尚未启动),并且可能需要大约3-15秒,直到应用程序启动并运行。在这种情况下,用户将从代理中获得错误 proxy.web(req, res, { target: 'http://' + hostname + ':' + Port console.log("App------------->Proxy App" );
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
});
如果出现错误日志中的堆栈如下
尝试在选项中设置proxyTimeout。此标志没有文档记录,但在代码中使用:
我认为节点代理无法实现这一点,因为它只将请求复制到目标并将结果传回。如果目标没有响应,它会准确地发回http状态或不可读取的代码。在这种情况下,您必须构建自己的代理函数,重复请求,直到收到正确的状态代码,如200或30X。我希望这很有帮助。@risyasin-谢谢,但现在更改它已经太晚了:(,还有其他想法吗?我如何用JS代码/事件重复它?如果用户要使用web浏览器;当代理失败时,您可以用漂亮的动画GIF“加载”来响应HTML和客户端JavaScriptp每1秒或2秒向服务器发送一次异步请求。在客户端放置一个计数器,当您认为重试次数太多时,让客户端脚本显示rrror。
var proxy = httpProxy.createProxyServer({proxyTimeout:3000}) // timeout 3 seconds