首页 > 解决方案 > 如何加入房间里的对手

问题描述

当 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 获取套接字对象,以及如何在房间中加入此连接?

标签: node.jsjoinsocket.io

解决方案


首先你需要正确处理错误,我不知道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)
 })

推荐阅读