使用不同的端口同时运行两个节点应用程序

时间:2016-11-14 09:59:15

标签: javascript node.js

我有两个节点应用程序使用端口3000和5000.当我在localhost上运行它时没有任何错误运行。但是当两个不同的终端同时运行两个时,最后一个仍然执行,第一个销毁会话并重定向到登录点击任何页面后的页面。之后点击最后一页任意页面时,他们也会丢失会话并重定向到登录。我想要两个应用程序运行。

这是管理员应用的会话和端口

 admin.use(session({
    secret : 'ssshhhhh',
    proxy : true,
    resave : true,
    saveUninitialized : true
}));


admin.set('port', process.env.PORT || 5000);
var debug = require('debug')('Admin App');
var server = admin.listen(admin.get('port'), function() {
    debug('Express server listening on port ' + server.address().port);
});

,这适用于用户应用

app.use(session({
    secret : 'ssshhhhh',
    proxy : true,
    resave : true,
    saveUninitialized : true
}));


app.set('port', process.env.PORT || 3000);
var debug = require('debug')('User App');
var server = app.listen(app.get('port'), function() {
    debug('Express server listening on port ' + server.address().port);
});

2 个答案:

答案 0 :(得分:0)

问题在于您的会话选项。对于管理员和用户应用程序,选项中没有定义会话名称。因此,将使用默认的session_name,这两个应用程序都是相同的。因此,会话将在同时运行时进行折腾。

要解决此问题,请为会话对象添加唯一名称选项,如下所示:

admin.use(session({
    name: 'admin_cookie',
    secret : 'ssshhhhh',
    proxy : true,
    resave : true,
    saveUninitialized : true
}));

app.use(session({
   name: 'user_cookie',
   secret : 'ssshhhhh',
   proxy : true,
   resave : true,
   saveUninitialized : true
}));

答案 1 :(得分:0)

到目前为止,我发现的最好方法是使用并发调用的包:

https://www.npmjs.com/package/concurrently

package.json配置如下对我有用:

  "scripts": {
    "start": "node server.js",
    "server": "nodemon server.js --ignore client",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  }