我正在构建一个社交多玩家实时游戏,我正在考虑实施什么样的架构,以便跟踪状态游戏并向连接的玩家发送正确的套接字。
我的游戏有4个州round start
,check players
,matching state
,round result
。这些状态有超时10 sec
并且在房间有玩家时反复循环。
我的状态如下:
var stateDoc = {
type: 'round start',
uid: uid,
timeout: 10000
};
我的问题是我应该如何存储状态并更新这些状态?
答案 0 :(得分:1)
你可以拥有一个叫做游戏的json数据。您可以将它作为二进制或json存储在redis列表中。如果你把它作为json传递,你可以在之前和之后执行一个toJson。
//游戏数量 LLEN游戏
//阅读游戏#0
LINDEX游戏0
//在列表末尾写游戏
RPUSH游戏" {...}"
RPUSH games.roundstart 1
你最好使用5个列表:每个州都有一个列表所有游戏都有一个 状态列表(例如games.roundstart)仅将密钥存储到此状态的游戏中。
更新逻辑应该存储在服务器端(而不是redis) 在更新过程中,您将查找每个列表并根据此列表执行操作。