0

我发现使用 node-http-proxy 将子目录路由到本地服务器上的不同端口很容易。但是,我还没有找到在进行路由时是否可以运行自定义函数的方法。我想做的是:

  1. 如果目标端口上的服务没有运行,启动它,然后完成路由
  2. 如果服务已经在目标端口上运行,只需执行路由

我不是在问如何检查服务并启动它,而是在每次重新路由发生时如何调用一个函数。

我可以做这样的事情吗?

var options = {
    route: {
        '/task1' : customFunc('3000'),
        '/task2' : customFunc('3001'),
    }
}

httpProxy.createServer(options).listen(80);
4

1 回答 1

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);
于 2013-10-08T18:30:44.073 回答