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