私は、socket.io にチャット アプリのキーと値 (ユーザー名とソケット ID) のペアを格納するために、redis サーバーを使用しています。
私が直面した問題は、同じユーザー名が異なるデバイスからログインできるため、異なるソケット ID を持つことです。SO 私は 1 つのユーザー名に対して socketIDs の配列を関連付ける必要があります。配列をキーに関連付けようとしましたが、配列の最初の要素のみを文字列として取得しているようです。以下は私のコードです
配列をキーに設定します。
var socketIDs = [];
socketIDs.push(socket.id);
client.set(username, socketIDs, function (err) {
console.log("IN USERNAME EVENT" + username + ":" + socketIDs);
});
キーから配列を取得する:
client.get(username, function (err, socketIDs) {
var i = socketIDs.indexOf(socket.id);
if (i != -1)
{
socketIDs.splice(i, 1);
}
client.set(username, socketIDs, function (err) {
console.log(username + " DISCONNECTED");
socket.disconnect();
});
});
ユーザー名に関連付けられた値を取得しようとすると、最初に追加した配列形式ではなく、socketID を文字列として取得します。
これに対する修正はありますか?または、単一のキーに対して複数の値を保存するという私の要件にアプローチする最良の方法は何ですか?