Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Socket não responde a Promise na SEGUNDA chamada - Frontend com VueJS

Olá Povo. Eu possuo uma aplicação que possui um chat para cada chamado.

Na listagem desses chamados, eu preciso que ele some 1 quando alguém enviar uma nova mensagem.

Na primeira vez que eu envio a mensagem ele responde e soma, porém nas seguintes ele recebe a mensagem, mas a Promise não responde.

Listen do Socket

listenMessages(id) {
        return new Promise(resolve => {
            this.io.on(`${id}`, (message) => {
                message.id = message.id.substr(2)

                if( !this.isYou(message.user) ) {
                    resolve(message)
                }
            });
        })   
    }

chamada do Listen na Listagem da Tabela com VueJS

mounted() {
        this.socket.listenMessages('om').then(res => {
            this.ombudsmans.find(omb => {
                if(omb.row.id == res.id) {
                    omb.count++
                    return omb   
                }
            })
        })
    },
1 resposta
solução

Fala aí Gustavo, tudo bem? Tente adicionar um reject pois pode não estar entrando no seu if, dessa maneira, a promise não será resolvida:

listenMessages(id) {
    return new Promise((resolve, reject) => {
        this.io.on(`${id}`, (message) => {
            message.id = message.id.substr(2)

            if( !this.isYou(message.user) ) {
                resolve(message)
            } else {
                reject('Usuário não bate')
            }
        });
    })   
}

Espero ter ajudado.