javascript - Socket.io 使用参数创建空间

标签 javascript node.js sockets redis socket.io

我正在开发多人扑克游戏,我正在使用 node.js 和 socket.io 以及 redis 适配器。

我有一些房间参数:

name: string - 服务器名称,用于大厅

password: string - 服务器密码,用于私有(private)游戏

gameSpeed: boolean - 游戏速度(快,正常,慢)

players: Array<string> - 玩家姓名,在这个房间里

amount: int - 这个房间可以连接的玩家数量

我在 socket.io 文档中找不到这样的功能。 有什么办法吗?

最佳答案

一个选择当然是创建一个对象,例如

var rooms = {
    room1: {
        name: 'room1',
        password: 'randomPassword'
        gameSpeed: true,
        players: [],
        amount: 8 // maybe rename to maxPlayers
    }
}

打开套接字后,如果需要,您只需发送 JSONified rooms 对象(不要忘记去掉密码)。在将 socket 连接到所需房间之前,只需检查您需要检查的内容(例如,如果 players.length < amount//maxPlayers)。

此外,在玩家数组中,您可能想要保存一个 playerObject,除了玩家数据之外,它还包含对玩家插槽的引用。这样,当您知道要对特定房间中的播放器执行某些操作时,就不必搜索整个 socket 列表。

最后,我发现有用的是,当我在 socket.io 服务器上工作时(虽然那是将近一年前的事情)有一个对象引用了所有连接的套接字,这些套接字用一些我可以轻松使用的唯一 ID 索引(例如数据库中用户的 uuid)。

关于javascript - Socket.io 使用参数创建空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108177/

相关文章:

javascript - 将 1 个表单附加到另一个表单 - 然后提交

Java-Sockets : InputStream. read() 与 BufferedReader.read()

.net - Socket.Receive 在收到所有数据之前不会阻塞

javascript - 来自 Protractor 测试的纯 HTTP 调用

javascript - 为什么 Node 的 mongoose 告诉我 undefined 不是一个函数?

css - 如何从命令行运行 cssnano

c - 如何确定同一 iOS 设备上对等 TCP 连接的 PID?

javascript - 如何动态创建javascript对象?

Javascript 捕获用户事件

javascript - 如何找到大型 Web 应用程序中事件处理程序的附加位置?