我可以在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}); });