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

标签 node.js sockets redis game-loop

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

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

我的状态如下所示:

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

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

最佳答案

  1. 您可以拥有一个名为游戏的 json 数据。您可以将其作为二进制文件或 json 存储在 redis 列表中。如果将其作为 json 传递,则可以执行 toJson before 和 fromJson after。

    //游戏数 伦游戏

    //读取游戏#0
    LINDEX 游戏 0

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

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

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

关于node.js - 检查游戏状态并向连接的客户端发送套接字的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719727/

相关文章:

python - 为什么 Linux 可以在多进程中接受套接字?

python - 处理概率变化系统的高效算法

javascript - 从函数返回的 View 不会在状态更改时更新

node.js - Travis 为我提供了与本地主机 :6379 failed - connect ECONNREFUSED 的 Redis 连接

node.js http 服务器响应套接字写入事件?

java - 套接字服务器,我没有收到服务器发送的消息

客户端。如何分离读/写操作?

redis bitset -- 如何上传现有的 bitset 数组

javascript - 创建文件路径的嵌套对象

javascript - Electron JS |如何更改打包的.exe文件的图标?