web-dev-qa-db-fra.com

NodeJS Express - routes séparées sur deux ports

J'ai un serveur express, et tout en le construisant, j'ai créé plusieurs fonctions "d'assistance" sur leurs propres routes. J'aimerais que ces routes soient accessibles sur un autre port. Est-il possible de le faire en express?

Dans le code ci-dessous, la route "/ factory" (et d'autres fonctionnalités) serait sur un port, et les routes d'assistance de "/ killallthings", "/ listallthings" et "/ killserver" seraient sur un port séparé. 

Voici une version simplifiée du code:

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);
});

Est-ce possible avec express?

22
JKC

D'après la suggestion ci-dessus concernant les pilules d'explosion, j'ai modifié le code de la manière suivante:

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);
});

J'aurais aimé savoir comment donner à Explosion Pills le mérite de sa réponse! :)

30
JKC

Si vous essayez de créer plusieurs serveurs, pourquoi ne pas créer plusieurs fichiers bin/www avec des ports et des configurations différentes. Vous pouvez également passer le numéro de port directement à partir de la ligne de commande.

0