Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

bagaimana saya bisa membuat sesi bekerja menggunakan redis, express &socket.io?

di dalam io.configure , Anda harus menautkan soket dengan sesi http.

Berikut sepotong kode yang mengekstrak cookie (Ini menggunakan socket.io dengan xhr-polling , saya tidak tahu apakah ini akan berhasil untuk websocket, meskipun saya menduga itu akan berhasil).

var cookie = require('cookie');
var connect = require('connect');

var sessionStore = new RedisStore({
  client: redis // the redis client
});

socketio.set('authorization', function(data, cb) {
  if (data.headers.cookie) {
    var sessionCookie = cookie.parse(data.headers.cookie);
    var sessionID = connect.utils.parseSignedCookie(sessionCookie['connect.sid'], secret);
    sessionStore.get(sessionID, function(err, session) {
      if (err || !session) {
        cb('Error', false);
      } else {
        data.session = session;
        data.sessionID = sessionID;
        cb(null, true);
      }
    });
  } else {
    cb('No cookie', false);
  }
});

Kemudian Anda dapat mengakses sesi menggunakan:

socket.on("selector", function(data, reply) {
  var session = this.handshake.session;
  ...
}

Ini juga memiliki manfaat tambahan yang memeriksa ada sesi yang valid, jadi hanya pengguna yang masuk yang dapat menggunakan soket. Anda dapat menggunakan logika yang berbeda.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengapa data disimpan dengan kunci aneh di Redis saat menggunakan Jedis dengan Spring Data?

  2. Bertanya dengan Redis?

  3. Koneksi Klien Node JS Redis Coba Lagi

  4. Redis:Untuk mengatur batas waktu untuk pasangan nilai kunci di Set

  5. Apakah saya mengimplementasikan serialisasi dan deserialize NodesJS + Passport + RedisStore?