我试图设置多个websocket服务器来处理具有一个中央http服务器的用户。快递程序通过在会话中存储用户名来在登录期间建立会话,并且用户被重定向到具有websocket客户端的页面。然后,websocket服务器尝试分解会话并在客户端连接时接收用户名。在测试期间,显而易见的是,用户对象仅存储在http服务器上(不在cookie中),并且实际上不能在websocket服务器上接收。这是http服务器代码:
var http = require('http');
var Express = require('express');
var bodyParser = require('body-parser');
var session = require('express-session');
var sessionParser = session({
secret: 'lalala',
cookie: {
maxAge: 3 * 60 * 60 * 1000
},
resave: true,
saveUninitialized: true
});
var app = Express();
app.use(sessionParser);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
var server = app.listen(args.port, function() {
console.log("HTTP server connected!");
});
现在我已经解释了整个问题,我的问题是:如何通过会话ID获取会话中存储的用户名?
P.S。 为了避免混淆,这个问题不是关于从HTTP GET / POST请求中获取用户名。基本上,我问WHERE会话是否存储在http服务器程序中,这样我就可以通过提供session_id来检索用户名。
答案 0 :(得分:0)
我在快递会的github上问了同样的问题。这是我从Doug Wilson那里得到的答案:
"因为您从未设置会话存储并将其传递给此模块,所以您正在使用用于基本开发的内存存储,并且仅存储在http服务器内存中。您希望实际使用通过sid将会话存储在数据库中的存储。
您可以使用的商店列表位于自述文件中:https://github.com/expressjs/session/blob/master/README.md#compatible-session-stores"