web-dev-qa-db-ja.com

NodeJS Express-2つのポート上の別々のルート

エクスプレスサーバーがあり、構築中に独自のルートにいくつかの「ヘルパー」関数を作成しました。これらのルートに別のポートでアクセスしたいのですが。とにかくこれをエクスプレスで行う方法はありますか?

以下のコードでは、「/ factory」ルート(およびその他の機能)は1つのポートにあり、「/ 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);
});

これはエクスプレスで可能ですか?

26
JKC

上記の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);
});

爆発薬に答えのクレジットを与える方法を知っていたらいいのに! :)

32
JKC

複数のサーバーを作成しようとしている場合は、異なるポートと構成を持つ複数のbin/wwwファイルを作成しないでください。別の方法は、コマンドラインからポート番号を直接渡すことです。