NodeJS Express - отдельные маршруты на двух портах

У меня есть экспресс-сервер, и при его создании он создал несколько "вспомогательных" функций на своих собственных маршрутах. Я хотел бы, чтобы эти маршруты были доступны в другом порту. Есть ли способ сделать это в экспресс?

В приведенном ниже коде маршрут "/ factory" (и другие функции) будет находиться на одном порту, а вспомогательные маршруты "/killallthings", "/listallthings" и "/killserver" будут включены отдельный порт.

Вот упрощенная версия кода:

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

Возможно ли это с выражением?

Ответы

Ответ 1

Основываясь на предложении Explosion Pills выше, я модифицировал код примерно таким образом:

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

Хотелось бы, чтобы я знал, как дать Взрывные таблетки кредит за ответ!:)

Ответ 2

Если вы пытаетесь создать несколько серверов, то почему бы не разбивать несколько файлов bin/www с разными портами и конфигурациями. Другим способом может быть номер порта прохода непосредственно из командной строки.