什么是检查游戏状态和发送套接字连接客户端的正确方法?

我正在构build一个社交多人实时游戏,我正在考虑采用什么架构来跟踪状态游戏,并向连接的玩家发送正确的游戏套接字。

我的比赛有四个状态round startcheck playersmatching state ,全部round result 。 这些状态有10 sec超时时间,并且有空间,而房间有玩家。

我的状态如下所示:

 var stateDoc = { type: 'round start', uid: uid, timeout: 10000 }; 

我的问题是我应该如何存储状态和更新这些?

  1. 你可以有一个叫做游戏的json数据。 你可以将它作为二进制文件存储或者作为json存储在一个redis列表中。 如果你把它作为JSON传递,你可以在JSON之前和之后执行一个toJson。

    //游戏数量LLEN

    //读游戏#0
    LINDEX游戏0

    //在列表的末尾写游戏
    RPUSH游戏“{…}”RPUSH games.roundstart 1

  2. 你最好使用5个列表:每个状态一个和所有游戏一个状态列表(例如games.roundstart)将只存储这个状态的游戏的关键。

  3. 更新逻辑应该存储在服务器端(而不是在redis中)。在更新过程中,您将查找每个列表并根据此列表执行操作。