我在redis商店中为我的socket.io聊天应用程序存储用户名/ 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");
}
});
});
答案 0 :(得分:1)
最简单的方法是存储两个对。一个username/id
,一个id/username
。所以无论你有什么信息,你都可以得到另一个,结果也是另一个键/值对。
答案 1 :(得分:0)
我建议您将socket.io Id合并到密钥中,例如
id:username
然后你可以做这样的事情
client.keys([socket.id + ':*'], function (err, result) {
if (err){
//handle in some way
}
for (var r in result) {
var key = result[r];
client.del(key, function(err, result){
// handle in some way
});
}
});