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

Bagaimana menangani pasangan pengguna dan soket dengan node.js + redis

Solusi yang lebih elegan adalah membuat setiap soket terhubung ke ID pengguna saluran, misalnya:

io.sockets.on('connection', function (socket) {
  socket.join(userID);
});

// when you want somebody to send a message to userID you can do:
io.sockets.in(userID).emit(message);

Ada dua hal yang perlu Anda perhatikan di sini:

  1. Pastikan hanya userID yang dapat terhubung ke salurannya, dengan demikian verifikasi sesi ( baca selengkapnya di sini:http://www.danielbaulig.de/socket-ioexpress/ )
  2. Saat koneksi meningkatkan nilai userID di redis (agar Anda tahu koneksi baru untuk pengguna yang mendengarkan) dan di disconnect menurunkan nilai userID (agar Anda tahu jumlah koneksi yang masih mendengarkan). Jika nilainya 0 maka Anda memancarkan pesan ke obrolan yang menyatakan bahwa ID pengguna telah pergi (karena jumlah koneksi yang mendengarkan saluran ID pengguna adalah 0).

Ketika pengguna lain ingin mengirim pesan ke ID pengguna, mereka tidak perlu terhubung ke saluran ID pengguna, mereka dapat mengirim pesan ke chat saluran dan berikan ID pengguna sebagai properti. Misalnya:

var chat = io
  .of('/chat')
  .on('connection', function (socket) {
    // connected to public chat
  })
  .on('message', function (data) {
    if (data.userID && data.message) {
      io.sockets.in(userID).emit('UserX: ' + data.message);
    }
  });



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kunci Python-redis() mengembalikan daftar objek byte alih-alih string

  2. Redis mencari variabel url redis env tidak yakin di mana harus meletakkan variabel env URI buruk (bukan URI?):(URI::InvalidURIError)

  3. Memeriksa apakah suatu nilai sudah ada dalam daftar Redis

  4. Periksa apakah redis sedang berjalan -> node js

  5. Redis notifikasi keyspace dengan StackExchange.Redis