Node.js上的多个服务器

7
我需要在同一个Node.js实例中模拟四个服务器(具有不同的主机和端口)。
例如:
domain1:8000 - domain2:8010 - domain3:8020 - domain4:8030 -
请问有人能帮我吗? 谢谢。

1
创建多个服务器(http或其他),并使它们监听不同的端口... - Seblor
我该如何创建它们? - McKenzie
官方文档中有一些HTTP服务器的示例:https://nodejs.org/api/http.html 编辑:我建议您查看其中的链接:https://dev59.com/y3E95IYBdhLWcg3wV8a_ - Seblor
你怎么分离主机呢?端口我懂。 - rootExplorr
3个回答

13

我添加了一个使用Node解决两个服务器问题的示例。

首先,您需要创建一个项目:

mkdir simulate4servers
cd simulate4servers
npm init (entry point: index.js)

安装 Express:

npm install express --save

将下一个文件放入目录中:

文件 app.js:

'use strict';
const express = require('express');
const app = express();
const routes = require('routes.js');

app.use('/',routes);

module.exports = app;

文件 app2.js:

'use strict';

const express = require('express');
const app2 = express();
const routes = require('routes2.js');

app2.use('/',routes);

module.exports = app2;

配置文件configDomain1.js:

module.exports = {
    port: 8000
}

配置文件 configDomain2.js:

module.exports = {
    port: 8010
}

文件 routes.js:

'use strict';

const express = require('express');
const api = express.Router();

api.get('/', (req,res)=>{
  res.send({message: 'Hello World!'});
});
module.exports = api;

文件 routes2.js:

'use strict';

const express = require('express');
const api = express.Router();

api.get('/', (req,res)=>{
  res.send({message: 'Hello World 2!'});
});
module.exports = api;

文件 index.js:

'use strict';

const app = require('./app')
const app2 = require('./app2')
const config = require('./configDomain1');
const config2 = require('./configDomain2');

app.listen(config.port, () => {
    console.log(`API REST running in http://localhost:${config.port}`);
});

app2.listen(config2.port, () => {
    console.log(`API REST running in http://localhost:${config2.port}`);
});

最后,运行它:

node index.js

9
const express = require("express");

const server1 = express();
const server2 = express();
const server3 = express();

server1.listen(8000, () => {
    console.log("Server 1 is up and running on port 8000");
})

server2.listen(8010, () => {
    console.log("Server 2 is up and running on port 8010");
})

server3.listen(8020, () => {
    console.log("Server 3 is up and running on port 8020");
})

express() 创建并返回一个服务器的实例。可以多次调用该函数创建多个实例,并监听不同的端口。就是这样。


2

这个回答是正确的 https://dev59.com/d63la4cB1Zd3GeqPKk6V#65159130。 但是它还应该包括 server.use(cors()),否则可能会出现错误 cors policy no 'access-control-allow-origin'

用于创建多个服务器的代码:

const express = require('express')
const cors = require('cors')
server=express()
server2=express()
server.use(cors())
server2.use(cors())

server.get('/',(req,res)=>res.send({"server":"3001","name":"aakash4dev","data":"data 1"}))
server2.get('/',(req,res)=>res.send({"server":"3002","name":"aakash4dev","data":"data 2"}))

server.listen(3001)
server2.listen(3002)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接