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

时间:2015-05-11 12:34:11

标签: node.js socket.io socket.io-1.0 node.js-connect

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

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

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

使用此应用程序需要相互交流。在房间内或全球范围内。无需与另一个名称空间对话。

提前致谢,

丹尼尔

1 个答案:

答案 0 :(得分:3)

我这样做没有问题。我有一些我构建的多人游戏(see here),它们都运行在同一个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});
});