如何在房间里加入对手

时间:2019-04-01 12:51:02

标签: node.js join socket.io

当X用户尝试与Y用户创建房间时。 我这样做:

socket.join(room.roomId);
UserConnectionId.findOne({userId: data.opponentId}).then((connection) => {
    //connection.connectionId is user's socket Id
    var socketList = io.sockets.server.eio.clients;
    if (socketList[connection.connectionId] != undefined){                    
        socketList[connection.connectionId].join(room.roomId);
    }
});

但显示此错误:

  

UnhandledPromiseRejectionWarning:TypeError:socketList [connection.connectionId] .join不是函数

如何通过socketId获取套接字对象,以及如何在房间中加入此连接?

2 个答案:

答案 0 :(得分:0)

首先,您需要正确处理错误,我不知道 socketList [connection.connectionId] .join(room.roomId)的作用。尝试使用此代码段可正确处理错误。然后使用 socketList [connection.connectionId] .join(room.roomId)函数的手册进行检查

socket.join(room.roomId);
UserConnectionId.findOne({userId: data.opponentId})
.then((connection) => {
    //connection.connectionId is user's socket Id
    var socketList = io.sockets.server.eio.clients;
    if (socketList[connection.connectionId] != undefined){                    
        return socketList[connection.connectionId].join(room.roomId);
    }
});
.catch((errors) => {
    console.log(errors)
 })

答案 1 :(得分:0)

解决方案*

我变了 var socketList = io.sockets.server.eio.clients;var socketList = io.sockets.sockets; 它是固定的