Ошибка при запросе пользовательского приложения перед его
Я использую прокси-модуль 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
});
В случае ошибки стек в журнале похож на
- Прокси-приложение
- Запрос прокси
- Ошибка прокси-сервера
В этом случае пользователь запустит URL-адрес приложения в браузере и сначала получит ошибку, и через несколько секунд, когда он обновит браузер, приложение запустится нормально.
Любое предложение, как решить эту проблему?
Я подумал о создании какого-либо API, который исследует статус proxyRes (например, вызывать его каждые 1 секунду и посмотреть, отвечает ли ответ 200, и не отправлять ошибку до того, как "проверите его с тайм-аутом" и если через 10 секунд нет ответа, возможно, отправить сообщение об ошибке, но не уверен, как это сделать, и если его хороший подход...
Есть идеи? или, может быть, через webSoket, но не уверен, как это сделать...
Это использование Im с открытым исходным кодом
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