我可以在socket.io的命名空间中使用房间吗?

我想知道是否可以在socket.io中使用多个房间。

据我所知,你可以使用命名空间或房间。

我的目的是通过只有一个node.js-socket.io-server的websockets,让我的应用程序有多个独特的实例与这个独特的应用程序交谈。

有了这个应用程序,就有要求彼此交谈。 在一个房间或全球范围内。 没有必要与另一个命名空间交谈。

提前致谢,

丹尼尔

这样做我没有问题。 我有几个我build立的多人游戏( 见这里 ),他们都运行在同一个socket.io实例。 命名空间使不同的游戏分开,并且房间将单个游戏中的单个游戏房间分隔开。

完整的代码示例在这里: https : //github.com/azurelogic/CakeRush/blob/master/controllers/cakerush.js

亮点是我在连接上使用命名空间:

io.of('/sockets/cakerush').on('connection', function (socket) { //... 

之后,我允许用户通过“join房间”活动join房间:

 socket.on('joinRoom', function (data) { // find the room being requested var room = _.find(rooms, {id: data.roomId}); /* skip some logic here... */ // register player with room room.playerIds.push(socket.id); socket.join(room.id); // send verification that room was joined to the player with room id socket.emit('roomJoined', {roomId: room.id, shouldGenerateFirstCake: shouldGenerateFirstCake}); });