Primo problema
Sto cercando di capire sessioni, negozi, autorizzazioni e redis. Se è importante, sto usando [email protected]
. Capisco che ho due opzioni per mettere il mio RedisStore()
. Quale uso? Li uso entrambi?In node.js, come posso eseguire il redis con socket.io ed express? Specificamente utilizzando RedisStore()
express.session({secret: 'secret', key: 'key', store: new RedisStore()});
io.set('store', new RedisStore());
ho già node.js
, express
e socket.io
esecuzione. Così ora sto cercando di implementare redis
ma non so come implementare l'autorizzazione usando sessioni/negozi e non so come scrivere sul database redis. Non ho trovato alcuna documentazione su questo. Ho trovato un sito che parla di sessioni e negozi utilizzando socket.io and express ma senza redis, e un altro che parla di sessioni e negozi using all three, ma non utilizza io.set('store', ...)
.
Inoltre, non so se dovrei utilizzare due negozi diversi, uno per lo express
e uno per lo socket.io
o se dovrei usarne uno solo. Guarda l'esempio per chiarire:
//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
});
posso utilizzare lo stesso per ogni RedisStore()
? Creo quelli separati per ciascuno? Devo semplicemente usare express
o socket.io
? Quello che voglio veramente è riuscire ad autenticare i client (presumo che ciò avvenga tramite le sessioni) e fare in modo che aggiornino il database redis quando si connettono, mantenendo un registro quando le persone accedono al mio sito. Il che porta al mio secondo problema.
secondo problema
quindi non ho idea di come accedere e modificare il database Redis da questo punto. Non sono stato in grado di testare questo a causa del mio primo problema, ma suppongo che sarebbe stato qualcosa di simile:
io.sockets.on('connection', function(socket){
var session = socket.handshake.session;
redis.put(session);
});
anche io non ho visto alcuna documentazione su come aggiornare un database Redis dall'interno nodo. js so I altamente dubbio che redis.put()
è la terminologia corretta haha. Ho visitato redis's website ma non riesco a trovare i comandi per node.js. Solo comandi per l'utilizzo di redis regolari dalla riga di comando. Ad ogni modo, se qualcuno potesse almeno indicarmi la giusta direzione sarebbe fantastico. Grazie. :)
Una nota: se si finisce per utilizzare una password sul proprio negozio redis, è necessario passare il modulo redis stesso sotto la chiave 'redis' come parte del costruttore RedisStore. Per maggiori informazioni, consultare: http://stackoverflow.com/questions/13438613/redis-auth-error-with-node-js-and-socket-io – Konklone