sql >> データベース >  >> NoSQL >> Redis

node.js+redisでユーザーとソケットのペアを処理する方法

    より洗練された解決策は、各ソケットをチャネルuserIDに接続することです。例:

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

    ここで注意する必要があるのは2つあります:

    1. userIDのみが自分のチャネルに接続できることを確認して、セッションを確認します(詳細はこちら:http://www.danielbaulig.de/socket-ioexpress/)
    2. 接続時にredisのuserIDの値を増やし(そのユーザーの新しい接続がリッスンしていることがわかるように)、切断時にuserIDの値を減らします(まだリッスンしている接続の数がわかるように)。値が0の場合、userIDが残っていることを示すメッセージをチャットに送信します(userIDチャネルをリッスンしている接続の数が0であるため)。

    他のユーザーがuserIDにメッセージを送信したい場合は、userIDチャネルに接続する必要はなく、chatにメッセージを送信できます。 チャネルし、userIDをプロパティとして渡します。例:

    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. ペルコナライブフランクフルト2018-イベントのまとめとセッション

    2. 配列から重複するエントリを削除するにはどうすればよいですか?

    3. $lookup演算子を使用した複数の結合条件

    4. herokumongohqおよびmongoidMongo::ConnectionFailure