Pierwszy problem
Próbuję dowiedzieć się sesji, sklepów, autoryzacji i redis. Jeśli jest to ważne, używam [email protected]
. Rozumiem, że mam dwie możliwości umieszczenia mojego RedisStore()
. Którego używam? Czy używam obu?W pliku node.js jak skonfigurować redis za pomocą socket.io i wyrazić? W szczególności przy użyciu RedisStore()
express.session({secret: 'secret', key: 'key', store: new RedisStore()});
io.set('store', new RedisStore());
mam już node.js
, express
i socket.io
uruchomiony. Teraz próbuję zaimplementować redis
, ale nie wiem, jak zaimplementować autoryzację za pomocą sesji/sklepów i nie wiem, jak napisać do bazy danych redis. Nie znalazłem żadnej dokumentacji na ten temat. Znalazłem stronę, która mówi o sesjach i sklepach przy użyciu socket.io and express, ale nie ma redis, a druga mówi o sesjach i przechowuje using all three, ale nie używa ona io.set('store', ...)
.
Nie wiem również, czy powinienem użyć dwóch różnych sklepów, jednego dla express
i jednego dla socket.io
, lub jeśli powinienem użyć jednego. Spójrz na przykład dla wyjaśnienia:
//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
});
Czy mogę używać tego samego RedisStore()
dla każdego? Czy mogę stworzyć osobne dla każdego? Czy po prostu używam express
lub socket.io
? To, czego naprawdę chcę, to móc uwierzytelniać klientów (zakładam, że odbywa się to za pośrednictwem sesji) i aktualizować bazę danych redis po nawiązaniu połączenia - prowadząc dziennik, kiedy ludzie odwiedzali moją witrynę. Co prowadzi do mojego drugiego problemu.
Drugi problem
więc nie mam pojęcia, jak do wglądu i edycji bazy danych Redis z tego punktu. Nie byłem w stanie przetestować to z powodu mojego pierwszego problemu, ale zakładam, że będzie to coś takiego:
io.sockets.on('connection', function(socket){
var session = socket.handshake.session;
redis.put(session);
});
Ja też nie widziałem żadnej dokumentacji na temat sposobu aktualizacji bazy danych Redis od wewnątrz węzła. js więc I bardzo wątpię, że redis.put()
jest poprawna haha terminologii. Odwiedziłem redis's website, ale nie mogę znaleźć poleceń dla node.js. Po prostu polecenia do używania zwykłych redis z wiersza poleceń. W każdym razie, jeśli ktoś mógłby wskazać mi właściwy kierunek, który byłby świetny. Dzięki. :)
Uwaga: jeśli używasz hasła w swoim sklepie redis, będziesz musiał przekazać sam moduł redis pod klawiszem "redis" jako część swojego konstruktora RedisStore. Aby uzyskać więcej informacji, zobacz: http://stackoverflow.com/questions/13438613/redis-auth-error-with-node-js-and-socket-io – Konklone