2015-02-27 17 views
17

Possiedo un server express e, durante la creazione, ha creato diverse funzioni di "helper" sui propri percorsi. Mi piacerebbe che quelle rotte fossero accessibili su una porta diversa. C'è comunque da fare in espresso?NodeJS Express - route separate su due porte

Nel seguente codice, la route "/ factory" (e altre funzionalità) si troverebbe su una porta e le route di helper di "/ killallthings", "/ listallthings" e "/ killserver" si troverebbero su un porta separata.

Ecco una versione semplificata del codice:

var express = require('express'); 
var things = []; 
var app = express(); 
var port = 8080; 

app.post('/factory/', function(req, res) { 
    //Create a thing and add it to the thing array 
}); 

//Assume more functions to do to things here.... 

app.post('/killallthings/', function(req, res) { 
    //Destroy all the things in the array 
}); 

app.post('/listallthings/', function(req, res) { 
    // Return a list of all the things 
}); 

app.post('/killserver/', function(req,res){ 
    //Kills the server after killing the things and doing clean up 
}); 

//Assume https options properly setup. 

var server = require('https').createServer(options, app); 

server.listen(port, function() { 
    logger.writeLog('Listening on port ' + port); 
}); 

Questo è possibile con espresso?

+5

È possibile creare due app –

+0

Con "creare due app" si intende qualcosa del tipo: 'var app1 = express(); var app2 = express(); '? Prenderò un rapido tentativo ... – JKC

+1

Sì e poi li faresti ascoltare su porte separate –

risposta

24

Sulla base di esplosione Pillole suggerimento sopra, ho modificato il codice in più o meno in questo modo:

var express = require('express'); 
var things = []; 
var app = express(); 
var admin_app = express(); 
var port = 8080; 
var admin_port = 8081; 

app.post('/factory/', function(req, res) { 
    //Create a thing and add it to the thing array 
}); 

//Assume more functions to do to things here.... 

admin_app.post('/killallthings/', function(req, res) { 
    //Destroy all the things in the array 
}); 

admin_app.post('/listallthings/', function(req, res) { 
    // Return a list of all the things 
}); 

admin_app.post('/killserver/', function(req,res){ 
    //Kills the server after killing the things and doing clean up 
}); 

//Assume https options properly setup. 

var server = require('https').createServer(options, app); 

server.listen(port, function() { 
    logger.writeLog('Listening on port ' + port); 
}); 

var admin_server = require('https').createServer(options, admin_app); 

admin_server.listen(admin_port, function() { 
    logger.writeLog('Listening on admin port ' + admin_port); 
}); 

Vorrei sapere come dare le pillole di esplosione del credito per la risposta! :)

+0

Questa potrebbe essere una domanda stupida ma qualche inconveniente a questa configurazione? Chiedo perché sembra così facile e sto copiando questo adesso. :) – user2348688

+0

una risposta tardiva :) Direi che il più grande inconveniente è la sicurezza. per la nostra app, si trattava di uno strumento di test temporaneo per uso interno e la porta di amministrazione era solo per mantenere i membri del team non tecnici lontani da alcune funzionalità, senza bisogno di sicurezza reale. in generale, non vorrei esporre la funzionalità di amministrazione con la porta che è l'unica protezione. ma era una bella soluzione per ciò di cui avevamo bisogno. – JKC

0

Se si sta tentando di creare più server, perché non memorizzare più file bin/www con porte e configurazioni diverse. Un altro modo potrebbe essere passare il numero di porta direttamente dalla riga di comando.

Problemi correlati