Запустите пользовательскую функцию при использовании таблицы маршрутизации на обратном прокси-сервере с node-http-proxy
Я обнаружил, что легко использовать node-http-proxy для маршрутизации подкаталога на разные порты на локальном сервере. Тем не менее, я не нашел, есть ли способ запустить пользовательскую функцию при выполнении маршрутизации. Что я хочу сделать, это:
- Если служба на целевом порту не работает, запустите ее, а затем завершите маршрут
- Если служба уже работает на целевом порту, просто выполните маршрут
Я не спрашиваю о том, как проверить службу и запустить ее, а просто о том, как вызывать функцию каждый раз, когда происходит повторный маршрут.
Могу ли я сделать что-то подобное?
var options = {
route: {
'/task1' : customFunc('3000'),
'/task2' : customFunc('3001'),
}
}
httpProxy.createServer(options).listen(80);
1 ответ
Решение
Вы не можете назначить функцию в качестве значения пути, так как это значение анализируется как URL. Смотрите здесь.
Вместо этого вы можете перехватывать запросы до того, как они попадут в маршрутизатор, запускать службы по мере необходимости и затем перенаправлять запрос обратно в маршрутизатор:
var init = function(req, res, next){
if(req.url.indexOf('task1') > -1 && !serviceIsRunning()){
startService();
next(); // forward req back to router
} else {
// no need to do anything, move request along
next();
}
}
httpProxy.createServer('localhost', options, init).listen(80);