sql >> Databáze >  >> NoSQL >> Redis

Jak zacházet s páry uživatelů a soketů pomocí node.js + redis

Elegantnějším řešením by bylo, aby se každý soket připojil k uživatelskému ID kanálu, například:

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);

Zde jsou dvě věci, o které se musíte postarat:

  1. Ujistěte se, že se k jeho kanálu může připojit pouze ID uživatele, a tím ověřte relaci (více informací naleznete zde:http://www.danielbaulig.de/socket-ioexpress/)
  2. Při připojení zvyšte hodnotu pro ID uživatele v redis (takže víte, že nové připojení pro daného uživatele naslouchá) a při odpojení snižte hodnotu ID uživatele (abyste věděli, kolik připojení stále naslouchá). Pokud je hodnota 0, odešlete do chatu zprávu o tom, že ID uživatele odešlo (protože počet připojení, která naslouchají kanálu ID uživatele, je 0).

Když ostatní uživatelé budou chtít odeslat zprávu na ID uživatele, nemusí se připojovat ke kanálu ID uživatele, mohou poslat zprávu do chat kanál a předat ID uživatele jako vlastnost. Například:

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. Jak nastavit mongod.conf bind_ip s více IP adresami

  2. MongoDB $setDifference

  3. Seskupit podle stavu v MongoDB

  4. Rozdělit řetězec podle znaku v Lua