Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在启动用户应用程序之前请求用户应用程序时出错_Javascript_Node.js_Express_Javascript Events_Node Http Proxy - Fatal编程技术网

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

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" );

我使用node http proxy模块使用反向代理运行应用程序,反向代理按预期工作,在某些情况下,用户希望立即运行应用程序,该应用程序的状态为进度(应用程序尚未启动),并且可能需要大约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,首先会出现错误,几秒钟后,当他刷新浏览器时,应用程序将正常运行。 如何解决这个问题有什么建议吗

    我考虑构建一些API来检查代理状态(比如每1秒调用一次,看看响应是否为200,在“使用超时检查”之前是否发送错误,如果在10秒后没有响应,则可能发送错误,但不确定如何执行,以及它的好方法是否。。。 有什么想法吗?或者通过webSoket,但不知道怎么做

    这是我使用的开源软件

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


    我认为节点代理无法实现这一点,因为它只将请求复制到目标并将结果传回。如果目标没有响应,它会准确地发回http状态或不可读取的代码。在这种情况下,您必须构建自己的代理函数,重复请求,直到收到正确的状态代码,如200或30X。我希望这很有帮助。@risyasin-谢谢,但现在更改它已经太晚了:(,还有其他想法吗?我如何用JS代码/事件重复它?如果用户要使用web浏览器;当代理失败时,您可以用漂亮的动画GIF“加载”来响应HTML和客户端JavaScriptp每1秒或2秒向服务器发送一次异步请求。在客户端放置一个计数器,当您认为重试次数太多时,让客户端脚本显示rrror。
    var proxy = httpProxy.createProxyServer({proxyTimeout:3000}) // timeout 3 seconds