【问题标题】:How to use sticky-session with cluster in express - node js如何在 express 中使用带有集群的粘性会话 - 节点 js
【发布时间】:2025-12-09 08:35:01
【问题描述】:

我参考this question创建了一个依赖集群的应用程序

但我开始面临会话处理方面的问题。如何在带有集群的 express js 中使用粘滞会话。

我试图使用这个npm module。但这导致了同样的情况。如何解决此会话问题。

sticky(http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
}););

【问题讨论】:

  • 你的问题很好。粘性会话模块的维护者应该更新他们的自述文件,包括基本的 http 服务器使用示例,以及与 express 模块的集成。

标签: node.js session express


【解决方案1】:

终于找到解决方案了,试试这段代码。它保持粘性,并为其他客户端使用所有 cpus [进程]。您可以使用以下代码使用快速集群粘性会话。你可以在这里https://github.com/indutny/sticky-session 获得sticky-session

var http = require('http');
var cluster = require('cluster'); // Only required if you want the worker id
var sticky = require('sticky-session');
var express = require('express');
var app = express();

app.get('/', function (req, res) {
    console.log('worker: ' + cluster.worker.id);
    res.send('Hello World!');
});


var server = http.createServer(app);
    sticky.listen(server,3000);

【讨论】:

    【解决方案2】:

    跟快递没关系。

    你只是忘记了粘滞函数的listen()。

    sticky(
      http.createServer(app).listen(app.get('port'), function () {
          console.log('Express server listening on port ' + app.get('port'));
      });
    ).listen(app.get('port'),function() {
      console.log('Sticky server started on port' + app.get('port'));
    });
    

    【讨论】:

    最近更新 更多