Суть такая: 1-ый юзер создает игровую комнату(game_id) и в нее подключается, сразу заносится в redis
client.rpush("game_id:"+game_id, username);
client.rpush("status:enable", array); //открыть комнату для подключения
.
После этого, к нему в комнату подключается 2 юзер(и последующие), так же заносится в редиску
client.rpush("game_id:"+game_id, username);
.
Через client.lrange узнается длина списка людей в комнате, после перебор имен и отправка клиенту.
client.lrange("game_id:"+game_id, "0", "-1", function(error, result){
for(var i=0; i<result.length;i++{
//Получаем имена
//Успешно отправляем клиенту
}
}
Далее, я пытаюсь установить ограничение на кол-во человек в комнате
if(result.length==8){
client.lrem("status:enable", "0", array_id); //удалить комнату из "доступных к подключению".
...//основные действия
}
.
Но столкнулся с такой проблемой, что при подключении 8 игроков ничего не происходит, комната закрывается лишь при заходе 9-го юзера. При этом сам 9-ый юзер в редиску не прописывается(т.к. он зашел уже после закытия комнаты). Пробовал установить if(result==7), но тогда комната закрывается при 8 юзерах, а последний(8) в redis отсутствует. Проводил проверки через консоль, ошибок вроде не находил. т.е. если в комнате есть 8 человек, то список из 8 человек так и прописан. Но node почему-то желает нового подключения для закрытия. Код массивный, если нужны будут дополнительные сведения, то пишите.