2

socket.io チャット アプリケーションの redis ストアにユーザー名と SocketID のペアを保存しています。

ユーザーが切断したら、redis ストアからユーザー名とソケット ID のペアを削除する必要があります。キーから値を取得する方法を見てきましたが、値からキーを取得することはありません。出来ますか?または、値だけからキーと値のペアを削除するにはどうすればよいですか。これが私のコードです

接続時にストアに追加する場合

socket.on('username', function (username) {

    client.set(username, socket.id, function (err) {
        console.log(username + ":" + socket.id);
    });

});

切断の場合、クライアントは切断がいつ発生するかわかりません。インターネット接続が失われたために発生する可能性がありますが、ソケットが切断されると、常に「切断」イベントが発生します。この場合、ユーザー名とソケット ID のペアを削除する必要があります。

socket.on('disconnect', function () {

// dont know the username??

    client.del(username, socket.id, function (err) {
        if (err)
            console.log(err);
        else {
            socket.disconnect();
            console.log(socket.id + " DISCONNECTED");
        }
    });
});
4

2 に答える 2

1

最も簡単な方法は、 2 つのペアを格納することです。1username/idつと 1 つid/username。したがって、あなたが持っている情報が何であれ、もう一方を取得でき、その結果、もう一方のキーと値のペアも取得できます。

于 2013-04-26T06:30:51.467 に答える