繁体   English   中英

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

[英]run two node application at same time with different port

我有两个节点应用程序使用端口 3000 和 5000。当我在本地主机上运行它时,它运行没有任何错误。但是当两个不同的终端同时运行两个时,最后一个保持执行,第一个销毁会话并在单击时重定向到登录页面在任何页面上。之后,当单击最后一个任何页面时,他们也会丢失会话并重定向到登录。我希望同时运行两个应用程序。

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

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

问题在于您的会话选项。 对于管理员和用户应用程序,选项中没有定义会话名称。 因此,将使用默认的 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
}));

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

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\""
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM