最初の問題
セッション、ストア、承認、およびRedisを把握しようとしています。重要な場合は、を使用してExpress@3.0.0rc4
います。私は自分のを置くための2つのオプションがあることを理解しています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を使用せずにセッションとストアについて説明しているサイトと、 3つすべてを使用してセッションとストアについて説明しているサイトを見つけましたが、を使用していませんio.set('store', ...)
。
express
また、2つの異なるストアを使用する必要があるのか、1つを使用するのか、1つだけを使用するのかわかりません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
かsocket.io
?私が本当に望んでいるのは、クライアントを認証し(セッションを通じて行われると思います)、クライアントが接続したときにRedisデータベースを更新してもらうことです。つまり、ユーザーが私のサイトにアクセスしたときのログを保持します。これが私の2番目の問題につながります。
2番目の問題
したがって、この時点から、redisデータベースにアクセスして編集する方法がわかりません。私は最初の問題のためにこれをテストすることができませんでしたが、私はそれが次のようなものになると思います:
io.sockets.on('connection', function(socket){
var session = socket.handshake.session;
redis.put(session);
});
また、node.js内からredisデータベースを更新する方法に関するドキュメントも見たことがないので、それが正しい用語であるかどうかは非常に疑わしいです。redis.put()
redisのWebサイトにアクセスしましたが、node.jsのコマンドが見つかりません。コマンドラインから通常のredisを使用するためのコマンドだけです。とにかく、誰かが少なくとも私を正しい方向に向けることができれば、それは素晴らしいことです。ありがとう。:)