Socket.io创建带参数的房间

时间:2016-01-30 22:50:09

标签: javascript node.js sockets redis socket.io

我正在开发多人扑克游戏,我使用带有redis适配器的nod​​e.js和socket.io。

我有一些房间参数:

name: string - 大厅的服务器名称

password: string - 私人游戏的服务器密码

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

players: Array<string> - 此会议室中的玩家姓名

amount: int - 玩家可以在此房间连接数量

我无法在socket.io文档中找到此类功能。 有没有办法做到这一点?

1 个答案:

答案 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。)