我放弃这个。可以请一些明智的stackoverflow僧侣修复我的错误吗?
代码是自我解释的。客户端发送房间名称,服务器执行 redis 查找并将有效房间推送到数组。添加所有房间后,应将列表发送给客户端。
问题是基于闭包、异步等。我理解这个问题,但无法解决问题,因为数组需要保留在函数内。棘手。
代码:
function roomList(socket){
var roomlist = [], rooms = getRooms(), p = /pChannel_/;
redis.select(7, function(err,res){
for (var k in rooms){
if(rooms[k] != '' && p.test(rooms[k])){
var key = 'channel:'+rooms[k];
redis.hgetall(key, function (err, reply) {
if(reply){
var c = io.sockets.manager.rooms[rooms[k]];
roomlist.push( Array(reply['name'],c.length,reply['icon']) );
}
else { console.log('nothing found'); }
});
}
}
// here be dragons
console.log(roomlist);
socket.emit('roomList', roomlist);
});
}
谢谢。