私はNodeとRedisを使い慣れていますので、ここで重要なことがないと私を許してください。私はnode_redisクライアントを使って、RedisにNode.jsのnet.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); 'undefined'として記録されます。 また、 net.Socket(obj).write( "asdasdasd");私とエラーを言ってくれます:
エラー:このソケットは閉じています。
私の質問は、Redisにこのような方法でソケットを保存し、検索時に動作することを期待できますか?これを行う正しい/より良い方法がありますか?
P.S. net.SocketへのキャストなしでSocketを取得しようとしましたが、それでも何もできませんでした。
それは暗闇の中でショットだようにそれは見えません。 IPアドレスも使用できますが、クライアントはNATの背後に隠れています。私は保存しているIPアドレスへの新しい接続を開くことを躊躇しています。 –