第一个问题
我试图弄清楚会话、商店、授权和redis。如果它很重要,我正在使用Express@3.0.0rc4
. 我知道我有两种选择来放置我的RedisStore()
. 我用哪一个?我两个都用吗?
express.session({secret: 'secret', key: 'key', store: new RedisStore()});
io.set('store', new RedisStore());
我已经有node.js
, express
, 并且socket.io
正在运行。所以现在我正在尝试实现redis
,但我不知道如何使用会话/存储来实现授权,也不知道如何写入 redis 数据库。我还没有找到任何关于此的文档。我找到了一个使用socket.io 和 express但没有 redis 讨论会话和存储的站点,另一个使用所有三个讨论会话和存储的站点,但它不使用io.set('store', ...)
.
我也不知道我是否应该使用两个不同的商店,一个 forexpress
和一个 for socket.io
,或者我应该只使用一个。查看示例以进行说明:
//Redis Variables
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
var pub = redis.createClient();
var sub = redis.createClient();
var client = redis.createClient();
var redis_store = new RedisStore({
redisPub: pub,
redisSub: sub,
redisClient: client
});
app.configure(function(){
//...code goes here...
app.use(express.session({
secret: 'secret',
key: 'key',
store: redis_store //Notice I'm using redis_store
}));
//...more code...
});
io.configure(function(){
io.set('store', redis_store); //Notice it's the same RedisStore() being used
});
我RedisStore()
每个人都使用相同的吗?我是否为每个创建单独的?我只使用express
orsocket.io
吗?我真正想要的是能够对客户端进行身份验证(我假设这是通过会话完成的)并让他们在连接时更新 redis 数据库——记录人们何时访问我的网站。这导致了我的第二个问题。
第二个问题
所以我不知道如何从这一点访问和编辑redis数据库。由于我的第一个问题,我无法对此进行测试,但我认为它会是这样的:
io.sockets.on('connection', function(socket){
var session = socket.handshake.session;
redis.put(session);
});
我也没有看到任何关于如何从 node.js 中更新 redis 数据库的文档,所以我非常怀疑这redis.put()
是正确的术语哈哈。我访问过redis 的网站,但找不到 node.js 的命令。只是从命令行使用常规 redis 的命令。无论如何,如果有人至少可以为我指出正确的方向,那就太好了。谢谢。:)