Клиент Socket.io не получает события - PullRequest
0 голосов
/ 26 августа 2018

Когда два клиента присоединяются к чату, я хочу отправить каждому из них уникальное сообщение.Первый клиент получает сообщение, а второй - нет.Это код:

io.on('connection', (socket) => {
var roomName
var firstPlayer
var secondPlayer
var connectedClients

socket.on('roomName', (obj) => {
    roomName = obj.name
    socket.join(roomName)
    connectedClients = Object.keys(io.sockets.adapter.rooms[roomName].sockets)

    if( connectedClients.length > 1 ){
        firstPlayer = connectedClients[0]
        secondPlayer = connectedClients[1]
        // sending the icon decision
        socket.to(firstPlayer).emit( 'iconDecide', { iAmX: true } )
        socket.to(secondPlayer).emit( 'iconDecide', { iAmX: false } )
    }
})

socket.on('move', (obj) => {
    socket.to(roomName).emit('receiveMove', obj)
}) })

Как мне отладить это?Есть ли способ увидеть ошибку, если socket.io не может отправить сообщение?

1 Ответ

0 голосов
/ 27 августа 2018

В API doc есть предупреждение, указывающее, почему оно не работает:

// sending to individual socketid (private message)
io.to(`${socketId}`).emit('hey', 'I just met you');
// WARNING: `socket.to(socket.id).emit()` will NOT work, as it will send to 
everyone in the room
// named `socket.id` but the sender. Please use the classic `socket.emit()` 
instead.

Вы можете использовать socket.broadcast, как указано в API doc :

socket.broadcast.to(socketId).emit('msg', 'msg data');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...