我是Node和Redis的新手,如果我在這裏丟失了一些至關重要的東西,請原諒我。我正嘗試在Redis中使用node_redis客戶端存儲Node.js net.Socket對象,以便可以重新使用先前在此Socket上創建的連接。 我儲存的插座,一個值作爲「用戶」的部分設置:在Redis中存儲和檢索套接字
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中存儲套接字並期望它們在檢索時工作?有沒有一個正確/更好的方法來做到這一點?
P.S.我嘗試檢索套接字沒有投到net.Socket,它仍然沒有任何好處。
它看起來就像是在黑暗中拍攝。我也可以使用IP地址,但我的客戶端隱藏在NAT後面,而且我還有其他一些問題,這使我無法打開與存儲的IP地址的新連接。 – 2012-02-27 04:28:15