node+socket.io做游戏,有些问题请教大家
发布于 7 年前 作者 RunHuaOil 2921 次浏览 来自 问答

node+socket.io单进程情况下,游戏房间内的玩家信息游戏信息都记录在socket.io的room对象上,游戏内的倒计时也用的node的setTimeout,这种情况下游戏可以运行。 但是为了能接收更多玩家,使用了cluster多进程,socket.io用的socket.io-redis来共享多个进程间的数据,这时候暴露出的问题主要有两点,一个是玩家信息和游戏信息不能共享,每个进程的socket.io维护着自己的原生数据,比如room的数据,我加在room里面的游戏信息无法通过socket.io-redis传递给其他进程。第二个是由于多进程,每个进程有自己的事件循环,setTimeout都是独立的,这个定时器不能集中管理,也有可能出现重复定时器的情况,不知如何解决,倒计时是游戏开始倒计时(因玩家退出进入还要取消重新定时),回合倒计时

4 回复

socket.io 只做游戏逻辑,玩家信息和计时器用单独的服务出去处理。这样你的逻辑服才能横向拓展。

回到顶部