什么是检查游戏状态和发送套接字连接客户端的正确方法?
我正在构build一个社交多人实时游戏,我正在考虑采用什么架构来跟踪状态游戏,并向连接的玩家发送正确的游戏套接字。
我的比赛有四个状态round start
, check players
, matching state
,全部round result
。 这些状态有10 sec
超时时间,并且有空间,而房间有玩家。
我的状态如下所示:
var stateDoc = { type: 'round start', uid: uid, timeout: 10000 };
我的问题是我应该如何存储状态和更新这些?
-
你可以有一个叫做游戏的json数据。 你可以将它作为二进制文件存储或者作为json存储在一个redis列表中。 如果你把它作为JSON传递,你可以在JSON之前和之后执行一个toJson。
//游戏数量LLEN
//读游戏#0
LINDEX游戏0//在列表的末尾写游戏
RPUSH游戏“{…}”RPUSH games.roundstart 1 -
你最好使用5个列表:每个状态一个和所有游戏一个状态列表(例如games.roundstart)将只存储这个状态的游戏的关键。
-
更新逻辑应该存储在服务器端(而不是在redis中)。在更新过程中,您将查找每个列表并根据此列表执行操作。