Ошибка при запросе пользовательского приложения до его запуска

Я использую прокси-модуль node-http для запуска приложения с обратным прокси-сервером, который работает должным образом, в некоторых случаях пользователь хочет немедленно запустить приложение, состояние которого находится в процессе (приложение еще не запущено), и это может занять около 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. Ошибка прокси

В этом случае пользователь запустит URL-адрес приложения в браузере и сначала получит сообщение об ошибке, а через несколько секунд, когда он обновит браузер, приложение будет работать нормально. Любое предложение, как решить эту проблему?

Я подумал о создании некоторого API, который проверяет статус proxyRes(например, вызывать его каждые 1 сек и посмотреть, равен ли ответ 200, и не отправлять ошибку до того, как "проверить это с тайм-аутом", и если через 10 сек нет ответа, возможно, отправить ошибка, но не уверен, как это сделать, и если его хороший подход... есть идеи? Или, может быть, через webSoket, но не уверен, как это сделать...

Это открытый исходный код, который я использую https://github.com/nodejitsu/node-http-proxy

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
Другие вопросы по тегам