【发布时间】:2012-06-01 15:09:26
【问题描述】:
我是 Node 和 Redis 的新手,如果我在这里遗漏了一些重要的东西,请原谅我。我正在尝试使用 node_redis 客户端将 Node.js net.Socket 对象存储在 Redis 中,因此我可以重用之前在此 Socket 上建立的连接。 我将套接字作为值存储为“用户”集的一部分:
client.sadd("users", username); //username is a string
client.hmset(username, "ip", socket.remoteAddress, "connection", net.Socket(socket));
在不同的点上,我将这个套接字检索为:
client.smembers("users", function(err, replies) {
replies.forEach(function(reply,i){
if(recipient == reply) { //recipient is the username i've got
client.hget(reply, "connection", function(err, obj) {
console.log("socket's remoteaddress = " + net.Socket(obj).remoteAddress);
net.Socket(obj).write("asdasdasd");
});
}
});
});
但是,: net.Socket(obj).remoteAddress);被记录为“未定义”。 还, net.Socket(obj).write("asdasdasd");给我和错误说:
错误:此套接字已关闭。
所以我想我的问题是 - 你可以在 Redis 中以这种方式存储 Socket 并期望它们在检索时工作吗?有没有正确/更好的方法来做到这一点?
附:我尝试在不强制转换为 net.Socket 的情况下检索 Socket,但它仍然没有任何好处。
【问题讨论】: