【发布时间】:2015-11-24 09:44:01
【问题描述】:
我必须实现一个功能,如果登录用户数超过允许的用户数,则不应允许更多用户登录。有没有办法获取正在运行/现有会话的列表?以及如何销毁特定会话?任何人都可以提供一个例子,因为我是 node.js 的新手。我的部分代码是:
express = require('express'),
session = require('express-session'),
RedisStore = require('connect-redis')(session),
bodyParser = require('body-parser');
redisOpts = {
pass: config.REDIS_PASS,
host: config.REDIS_SERVER || null,
port: config.REDIS_PORT || null
},
sessionStore = new RedisStore(redisOpts),
app = express();
app.use(session({
store: sessionStore,
secret: 'XXX',
resave: true,
saveUninitialized: true
}));
编辑
express = require('express'),
session = require('express-session'),
redis = require("redis"),
RedisStore = require('connect-redis')(session),
bodyParser = require('body-parser');
redisOpts = {
pass: config.REDIS_PASS,
host: config.REDIS_SERVER || null,
port: config.REDIS_PORT || null
},
redisClient = redis.createClient(redisOpts.port, redisOpts.host, { auth_pass: redisOpts.pass }),
sessionStore = new RedisStore(redisClient),
app = express();
app.use(session({
store: sessionStore,
secret: 'XXX',
resave: true,
saveUninitialized: true
}));
如果检查会话列表,则在登录功能内的 app.js 中:
redisClient.keys("sess:*", function(error, keys){
console.log("Number of active sessions: ", keys.length);
console.log(keys);
});
在此编辑之后,它在此行的 connect-redis.js 中引发错误:
TypeError: this.client.unref is not a function
if (options.unref) this.client.unref();
感谢任何帮助。
非常感谢。
【问题讨论】:
标签: node.js session express node-redis