我正在使用REDIS和Socket.io在Node.js上进行游戏。
我在这个游戏中有“房间”。房间里有1到9名球员。他们可以随时随地加入和离开。
此外,房间中还有一个循环(setInterval),该循环从Redis吸引一名玩家,并将其设为“领导者”。
存储在Redis中的玩家按设置(rooms:ROOMID:online)。当用户加入聊天室时,我将其添加到此集合中。当用户离开时,我将其从场景中移除。
也许这是一个愚蠢的问题,但是...
考虑到集合可能在循环的每次迭代中更改(可以变小或变大,用户可以加入并离开),因此如何在每次迭代中不重复地获取下一个用户,直到我手动停止循环为止。
我想要的示例:集合中有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
注意:我不能从我的主要房间(rooms:ROOMID:online)中进行SPOP。
对不起,我的英语,谢谢您的帮助。
我建议您保留另一套,例如rooms:ROOMID:elected
。rooms:ROOMID:online
在每个加入/同步事件中,使其与设置保持同步。从中获取SPOP,然后将其清空,然后将内容房间:ROOMID:在线复制到它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句