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

时间:2015-11-15 12:36:27

标签: node.js sockets redis game-loop

我正在构建一个社交多玩家实时游戏,我正在考虑实施什么样的架构,以便跟踪状态游戏并向连接的玩家发送正确的套接字。

我的游戏有4个州round startcheck playersmatching stateround result。这些状态有超时10 sec并且在房间有玩家时反复循环。

我的状态如下:

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

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

1 个答案:

答案 0 :(得分:1)

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

    //游戏数量 LLEN游戏

    //阅读游戏#0
    LINDEX游戏0

    //在列表末尾写游戏
    RPUSH游戏" {...}" RPUSH games.roundstart 1

  2. 你最好使用5个列表:每个州都有一个列表所有游戏都有一个 状态列表(例如games.roundstart)仅将密钥存储到此状态的游戏中。

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