2016-01-30 43 views
1

我正在开发多人扑克游戏,并使用node.js和socket.io以及redis适配器。Socket.io创建带参数的房间

我有房的一些参数:

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

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

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

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

- 玩家可以在这个房间连接的数量

我在socket.io文档中找不到这样的功能。 有没有办法做到这一点?

回答

0

一个选项肯定会创建一个对象,例如,

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

打开一个套接字后,只需发送JSONified房间对象(如果需要的话)(不要忘记删除密码)。在将套接字加入所需房间之前,只需检查您需要检查的内容(例如,如果players.length <数量为maxPlayers)。

另外,在玩家阵列中,您可能想要保存一个playerObject,除了玩家数据之外,它还拥有对玩家套接字的引用。这样,当你知道你想在特定的房间里与玩家做某事时,你不必搜索整个套接字列表。

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