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

Redis, Node.js, dan Socket.io :Otentikasi lintas server dan pemahaman node.js

Oke, saya punya jawaban saya. Saya kesulitan mencari tahu, berjam-jam mencari ...

Inilah topik terkait yang memungkinkan saya untuk membuatnya bekerja (jawaban DAN komentar):

Cara menghapus Redis pada pendengar 'pesan'

Dan ini kode saya:

io.on('connection', function(client){
    console.log('Client id #'+client.id);

    if (client.handshake.session) {
      var user_socket_channel = client.handshake.session['user_socket_channel'];
    }

    var redis_listener = function(redis_channel, rawdata) {
      console.log('Redis connection on '+redis_channel);
      var data = JSON.parse(rawdata);
      if (data.channel) { var socket_channel = data.channel; }
      else { 
        if (user_socket_channel) { var socket_channel = user_socket_channel; }
        else { var socket_channel = 'public' }
      }
      var rails_data = data.data;
      console.log('Socket.io emiting on ['+socket_channel+']');
      client.emit(socket_channel, rails_data);
    };

    redis_subs.on('message', redis_listener);

    client.on('disconnect', function(){
      console.log('Client disconnect, removing redis listener..');
      redis_subs.removeListener('message', redis_listener);
    });
});

Bergantung pada konteksnya, Anda perlu memanggil redis.removeListener pada acara io.client.disconnect.

Berikut ini kemungkinan alternatif :

https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

Omong-omong, pertanyaan terkait ini tampaknya serupa dengan jawaban yang akurat, tetapi sebenarnya tidak (tidak berhasil). Lebih lanjut, lihat komentar yang disorot:

Bagaimana cara menggunakan kembali koneksi redis di socket.io?




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sesuatu seperti cache tag dan menanyakannya untuk menyarankan mereka menggunakan Redis

  2. Dapatkan nilai menurut pola kunci di StackExchange.Redis

  3. Flask:menyebarkan pekerjaan pekerja latar belakang (rq, redis)

  4. Mengapa Travis gagal terhubung menggunakan Redis cache_store saat menggunakan Heroku?

  5. Hitung ulang pemindaian:Bagaimana cara memaksa SCAN untuk mengembalikan semua kunci yang cocok dengan suatu pola?