Socket.io - 告诉客户他是否创建或加入一个房间

时间:2016-03-20 10:16:37

标签: javascript node.js socket.io

我目前使用以下代码允许用户在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);
    }


    ...

});

上面的代码不起作用,因为客户端无法接收发出的消息(我猜因为是在“创建”事件)。要清楚,我可以在服务器上确定是否创建了房间,但客户端不知道。

是否有有效的方式通知客户他是否负责创建或只是加入一个房间?

0 个答案:

没有答案