Получение другого идентификатора сокета на 2 socket.on (событие) - PullRequest
0 голосов
/ 17 апреля 2020

Я создаю приложение на основе сокетов с реагированием и узлом / express. После выполнения события io.on ('connection') пользователь добавляется в массив пользователей с помощью функции addUser({id:socket.id, name, room}), которая вызывается в событии socket.on ('join'). При попытке отправить массаж im с использованием socket.on ('sendMsg') и вызова функции getUser (socket.id), но по какой-то причине он отправляет другой идентификатор функции.

io.on('connection',(socket)=>{
    socket.on('join',({name,room})=>{
        const user = addUser({id:socket.id, name, room})
        socket.join(user.room)
        socket.emit('message',{user:'admin',text:`${user.name}, welcome to the room ${user.room}`})
        socket.broadcast.to(user.room).emit('message',{user:'admin', text:`${user.name} has joined`})     
        socket.on('disconnect',()=>{
            console.log('usre left')
        })
    })
    socket.on('sendMsg',(msg, callback)=>{
        console.log('what the fuck is this:', socket.id)
        const user = getUser(socket.id)
        console.log(user)

        io.to(user.room).emit('message',{user:user.name,text:msg})
        callback()
    })
})

const addUser = ({id, name, room}) =>{
    const existingUsers = users.find(user=>user.room === room && user.name === name)
    if(existingUsers) {
        console.log('not adding')
        return {error:'User name is taken'}
    }
    const user = { id, name, room}
    users.push(user)
    console.log('users updated, ' ,users)
    return user
}

const getUser = (id) =>{
    console.log(users)
    return users.find(user=> user.id === id)
}

Я понятия не имею, почему это происходит. кто-нибудь?

1 Ответ

0 голосов
/ 17 апреля 2020

решаемая. Мой экземпляр сокета на стороне КЛИЕНТА обновлялся каждый раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...