Как присоединиться к противнику в комнате - PullRequest
0 голосов
/ 01 апреля 2019

Когда пользователь 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 голосов
/ 01 апреля 2019

Решение *

Я изменил var socketList = io.sockets.server.eio.clients; с var socketList = io.sockets.sockets; исправлено

0 голосов
/ 01 апреля 2019

Сначала нужно правильно обработать ошибку, я не знаю, что делает socketList [connection.connectionId] .join (room.roomId) функция. Попробуйте этот фрагмент для правильной обработки ошибок. Затем проверьте, используя инструкцию socketList [connection.connectionId] .join (room.roomId) function

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)
 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...