2015-02-27 4 views
17

У меня есть экспресс-сервер, и при его создании он создал несколько «вспомогательных» функций на своих собственных маршрутах. Я хотел бы, чтобы эти маршруты были доступны в другом порту. Есть ли способ сделать это в экспресс?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); 
}); 

Возможно ли это с курьерским?

+5

Вы можете создать два приложения –

+0

Под «create two apps» вы имеете в виду что-то вроде этого: 'var app1 = express(); var app2 = express(); '? Я дам вам быструю попытку ... – JKC

+1

Да, и тогда вы будете слушать их на отдельных портах –

ответ

24

на основе взрыва Таблетки предложение выше, я изменил код примерно так:

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

Я хотел бы знать, как дать ВЗРЫВА пилюль кредит за ответ! :)

+0

Это может быть глупый вопрос, но любые недостатки этой конфигурации? Я спрашиваю, потому что это кажется таким простым, и я копирую это прямо сейчас. :) – user2348688

+0

поздний ответ :) Думаю, самым большим недостатком является безопасность. для нашего приложения это был инструмент для временного тестирования только для внутреннего использования, а порт администратора был просто для того, чтобы не дать техническим членам команды отказаться от некоторой функциональности - никакой реальной необходимости в безопасности. в общем, я бы не хотел раскрывать функциональность администратора, поскольку порт был единственной защитой. но это было хорошее решение для того, что нам было нужно. – JKC

0

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

Смежные вопросы