我正在开发多人扑克游戏,我正在使用 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/