1

我想知道我是否可以在 socket.io 中使用多个带有命名空间的房间。

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

我的目的是让我的应用程序的多个唯一实例通过只有一个 node.js-socket.io-server 的 websockets 与具有此唯一应用程序的其他实例进行通信。

有了这个应用程序,就需要互相交谈。无论是在房间内还是在全球范围内。无需与另一个命名空间对话。

提前致谢,

丹尼尔

4

1 回答 1

4

我这样做没有问题。我构建了一些多人游戏(请参见此处),它们都在同一个 socket.io 实例上运行。命名空间将不同的游戏分开,房间将单个游戏中的各个游戏房间分开。

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

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

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

稍后,我允许用户通过“加入房间”事件加入房间:

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});
});
于 2015-05-11T14:28:31.470 回答