我正在使用REDIS和Socket.io在Node.js上制作游戏。
我在这个游戏中有“房间”。房间里有1到9名玩家。他们可以随时加入和离开。
在房间里还有一个循环( setInterval ),它从Redis中获取一名玩家并使该玩家成为“领导者”。
玩家按照设置存储在Redis中( rooms:ROOMID:online )。当用户加入房间时,我将他添加到此套装中。当用户离开时,我将他从集合中删除。
也许这是一个愚蠢的问题,但是......
如何在没有DUPLICATE的情况下获得下一个用户,直到我手动停止循环,考虑到循环的每次迭代都可以改变集合(可以变小或变大,用户可以加入和离开)。
我想要的例子:集合中有3个用户(0,1,2)
setInterval(function, 1000);
>0
>1
>2
> User 3 joined the room (added to set)
>0
>1
>2
>3
>0
>1
>2
> User 2 left the room (removed from set)
>3
>0
>1
>3
>...etc
注意:我不能从我的主套装SPOP(房间:ROOMID:在线)。
对不起我的英文,感谢您的帮助。
答案 0 :(得分:0)
我建议你保留另一套,例如rooms:ROOMID:elected
。与每个加入/同步事件上设置的rooms:ROOMID:online
保持同步。来自它的SPOP,一旦它是空的,复制内容室:ROOMID:在线到它。