私は、ユーザーのオンライン/オフライン状態を追跡するためにsocket.io、redisを使用しています。ここでは、名前としてno.ofユーザーをキーhub_idでキーとして保管しています。私はちょうどhub_パターンに一致するキーの数を取得することによってユーザーの数を得ることができます。これで、キーはオンラインまたはオフラインのステータスとして価値を持ちます。redis、nodejsを使ってオンライン/オフラインユーザー数を調べる
私はいいえを得ることができません。 forループの外側にあるオンラインまたはオフラインの変数。
app.get('/test', function(req, res) {
client.keys('hub*', function (err, keys) {
console.log(keys.length);
for (var i=0; i<keys.length; i++){
client.hgetall(keys[i], function(err, reply) {
if(reply.status == "online"){
onlinehub++;
}
else if(reply.status == "offline"){
offlinehub++;
}
});
}
console.log(onlinehub +"-" +offlinehub)
});
});
ノートからの助けを取ることができます - あなたのハッシュが大きい場合これはしばらく時間がかかる可能性があります。代わりに、オフライン/オンライン/あらゆるユーザーのカウンター(Redisで)を保持して、1回の読み取り操作で返信を受け取ることができます。 –