我正在开发多人扑克游戏,我使用带有redis适配器的node.js和socket.io。
我有一些房间参数:
name: string
- 大厅的服务器名称
password: string
- 私人游戏的服务器密码
gameSpeed: boolean
- 游戏速度(快速,正常,慢速)
players: Array<string>
- 此会议室中的玩家姓名
amount: int
- 玩家可以在此房间连接数量
我无法在socket.io文档中找到此类功能。 有没有办法做到这一点?
答案 0 :(得分:0)
一个选项肯定会创建一个像对象一样的对象。
var rooms = {
room1: {
name: 'room1',
password: 'randomPassword'
gameSpeed: true,
players: [],
amount: 8 // maybe rename to maxPlayers
}
}
打开套接字后,只需在需要时发送JSONified rooms对象(不要忘记删除密码)。在将插座连接到所需房间之前,只需检查您需要检查的内容(例如,如果players.length&lt; amount // maxPlayers)。
此外,在players数组中,您可能希望保存一个playerObject,除了玩家数据之外,还保存对玩家套接字的引用。这样,当您知道要对特定房间中的玩家做某事时,您不必搜索整个套接字列表。
最后,当我在socket.io服务器上工作时(虽然那是差不多一年前),我发现有一个对象引用了所有连接的套接字,这些套接字索引了一些我可以轻松使用的唯一ID(例如用户来自数据库的uuid。)