我目前使用以下代码允许用户在socket.io中创建/加入特定的房间:
socket.on('create', function (roomId) {
...
socket.join(roomId);
...
});
由于join函数用于创建和加入同一个房间,我想告诉客户端他是创建房间还是加入现有房间。
我想做什么
我尝试存储Id(以及与问题无关的其他信息),然后检查该ID是否已存在并根据结果发出不同的消息。类似的东西:
// "repo" is a variable declared globally
socket.on('create', function (roomId) {
...
socket.join(roomId);
if (repo.hasRoom(roomId)) {
app.io.sockets.in(roomId).emit('someone Joined');
} else {
app.io.sockets.in(roomId).emit('someone Created this room');
repo.saveRoom(roomId);
}
...
});
上面的代码不起作用,因为客户端无法接收发出的消息(我猜因为是在“创建”事件)。要清楚,我可以在服务器上确定是否创建了房间,但客户端不知道。
是否有有效的方式通知客户他是否负责创建或只是加入一个房间?