primer problema
que estoy tratando de averiguar sesiones, tiendas, autorización y Redis. Si es importante, estoy usando [email protected]
. Entiendo que tengo dos opciones para poner mi RedisStore()
. ¿Cuál uso? ¿Uso ambos?En node.js, ¿cómo configuro el redis con socket.io y express? En concreto utilizando RedisStore()
express.session({secret: 'secret', key: 'key', store: new RedisStore()});
io.set('store', new RedisStore());
que ya tienen node.js
, express
y socket.io
corriendo. Así que ahora estoy tratando de implementar redis
, pero no sé cómo implementar la autorización utilizando sesiones/tiendas y no sé cómo escribir en la base de datos redis. No he encontrado ninguna documentación sobre esto. Encontré un sitio que habla sobre sesiones y tiendas usando socket.io and express pero no redis, y otro que habla sobre sesiones y almacena using all three, pero no usa io.set('store', ...)
.
Tampoco sé si debería usar dos tiendas diferentes, una para express
y otra para socket.io
, o si solo debo usar una. Mira el ejemplo de aclaración:
//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
});
puedo utilizar la misma para cada RedisStore()
? ¿Creo uno separado para cada uno? ¿Solo uso express
o socket.io
? Lo que realmente quiero es poder autenticar clientes (supongo que eso se hace a través de sesiones) y hacer que actualicen la base de datos redis cuando se conectan, manteniendo un registro de cuándo las personas accedieron a mi sitio. Lo que lleva a mi segundo problema.
segundo problema
así que no tengo idea de cómo acceder y editar la base de datos Redis desde este punto. No he podido probar esto a causa de mi primer problema, pero supongo que sería algo como esto:
io.sockets.on('connection', function(socket){
var session = socket.handshake.session;
redis.put(session);
});
Tampoco he visto ninguna documentación sobre cómo actualizar una base de datos Redis desde dentro del nodo. js así que altamente dudas que redis.put()
es la terminología correcta jaja. He visitado redis's website pero no puedo encontrar comandos para node.js. Solo comandos para usar redis regulares desde la línea de comando. De todos modos, si alguien podría al menos apuntarme en la dirección correcta, sería genial. Gracias. :)
Una nota: si termina usando una contraseña en su tienda redis, tendrá que pasar el módulo redis bajo la tecla 'redis' como parte de su constructor RedisStore. Para obtener más información, consulte: http://stackoverflow.com/questions/13438613/redis-auth-error-with-node-js-and-socket-io – Konklone