我正在使用 redis 服务器为 socket.io 中的聊天应用程序存储键值(用户名-socketID)对。
我面临的问题是相同的用户名可以从不同的设备登录,因此会有不同的socketID。所以我必须将一组 socketID 与一个用户名相关联。我试图将数组与键相关联,但似乎只将数组的第一个元素作为字符串。下面是我的代码
将数组设置为键:
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 作为一个字符串,而不是我最初添加的数组格式。
有什么解决办法吗?或者满足我为单个键存储多个值的要求的最佳方法是什么?