我可以在 socket.io 的命名空间中使用房间吗
Can I use rooms in namespaces in socket.io
我想知道我是否可以在 socket.io 中使用带有命名空间的多个房间。
据我所知,您可以使用命名空间或房间。
我的目的是让我的应用程序的多个唯一实例通过只有一个 node.js-socket.io-server 的 websockets 与其他使用这个独特应用程序的实例进行通信。
使用此应用程序需要相互交谈。在一个房间内或全球范围内。无需与另一个命名空间对话。
提前致谢,
丹尼尔
我这样做没有问题。我有几个我构建的多人游戏 (see here),它们都在同一个 socket.io 实例上 运行。命名空间将不同的游戏分开,房间将单个游戏中的各个游戏房间分开。
完整代码示例在这里:
https://github.com/azurelogic/CakeRush/blob/master/controllers/cakerush.js
重点是我在连接上使用了命名空间:
io.of('/sockets/cakerush').on('connection', function (socket) { //...
然后,我允许用户通过 'join room' 事件加入房间:
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});
});
我想知道我是否可以在 socket.io 中使用带有命名空间的多个房间。
据我所知,您可以使用命名空间或房间。
我的目的是让我的应用程序的多个唯一实例通过只有一个 node.js-socket.io-server 的 websockets 与其他使用这个独特应用程序的实例进行通信。
使用此应用程序需要相互交谈。在一个房间内或全球范围内。无需与另一个命名空间对话。
提前致谢,
丹尼尔
我这样做没有问题。我有几个我构建的多人游戏 (see here),它们都在同一个 socket.io 实例上 运行。命名空间将不同的游戏分开,房间将单个游戏中的各个游戏房间分开。
完整代码示例在这里: https://github.com/azurelogic/CakeRush/blob/master/controllers/cakerush.js
重点是我在连接上使用了命名空间:
io.of('/sockets/cakerush').on('connection', function (socket) { //...
然后,我允许用户通过 'join room' 事件加入房间:
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});
});