当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获取套接字对象,以及如何在房间中加入此连接?
答案 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;
它是固定的