Right, should’ve shown the code beforehand. Here goes:
- The entry code: http://git.ingwie.me/ingwie/bird3/blob/master/app.js
- The actual handler code:
http://git.ingwie.me/ingwie/bird3/blob/master/lib/request_handler.js
Please note that I have to use vhost for this case. For now, that seems to
somehow work. But. If I pass a new connect instance to the api_handler.js file,
it will never be reached. So I think my routing is a little f****d up…
When I tried to turn this whole thing into a clustered aproach (in hopes to
increase speed, which seemed to not have been the case…) I had tried to make
the orutes without the vhost module at all, which then looked like:
var connect = require("connect"),
app = connect(),
main = connect(),
api = connect(),
cdn = connect();
app.use(connectLogger());
app.use(responsetime());
app.use(compress());
// Now comes
app.use("/", main);
app.use("/cdn", cdn);
app.use("/api", api);
// The files were re-written by then.
require("lib/request_handler")(main);
require("lib/cdn_handler")(cdn);
require("lib/api_handler")(api);
But that resulted in a total mess. My main site loaded, but only the / route
got hit - none of the others were! Even when I moved it to the bottom, same
result…
> Am 22.01.2015 um 08:25 schrieb Oleg Verych <[email protected]>:
>
> Hey folks.
>
>
> Hi.
>
> I am trying to work out my way aorund a tiny routing issue I have.
>
> There are three major modules: API, CDN and Main. I want to map them as
> follows:
>
> main => /
> cdn => /cdn
> api => /api
>
> So anything that goes to /api/* is handled by the API part, for instance. But
> all that is called is the main route, and the other two just never get a
> chance.
>
> What would the proper connect setup be to use all three routes? Because I
> just can’t seem to get all three working at the same time…
>
>
> Some code would be nice to look at.
>
> Connect as simple http server may have request handlers like so:
>
> var server = require('http').createServer(router);
>
> function router(req, res){
> console.log(req.url);
>
> if('/' == req.url){
> return main(req, res);
> }
> if('/cdn' == req.url.slice(0, 4)){
> return cdn(req, res);
> }
> return api(req, res);
> }
>
>
> But for handling middleware stack any such function has 3d argument
>
> var connect = require('connect')
> var app = connect()
>
> app.use(mwRouter)
>
> function mwRouter(req, res, next){
> var url;
>
> if('/' == req.url){
> return main(req, res, next);
> }
> url = req.url.slice(0, 4);
>
> if('/cdn' == url){
> return cdn(req, res, next);
> }
> if('/api' == url){
> return api(req, res, next);
> }
>
> return next();// go on with other middlewares
> }
>
>
> `next()` is next handler installed by app.use(function handler(res, req,
> next){ }) or this is a shortcut to an error handler if `next(error)` was
> actually called.
>
> --
> sed 'sh && sed && node.js + olecom = happiness and mirth' << ''
> -o--=O`C
> #oo'L O
> <___=E M
>
>
> --
> Job board: http://jobs.nodejs.org/ <http://jobs.nodejs.org/>
> New group rules:
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> <https://gist.github.com/othiym23/9886289#file-moderation-policy-md>
> Old group rules:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> <https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/nodejs/cdc1ca19-0717-444c-b9d5-97a98f96fba1%40googlegroups.com
>
> <https://groups.google.com/d/msgid/nodejs/cdc1ca19-0717-444c-b9d5-97a98f96fba1%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout
> <https://groups.google.com/d/optout>.
--
Job board: http://jobs.nodejs.org/
New group rules:
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/B06AF7FF-8CC0-4B93-B65A-D8779329C6E6%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.