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

What is the proper way to check game state and send sockets to connected clients?

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

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

我的状态如下所示:

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

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

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

    //游戏数 LLEN 游戏

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

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

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

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