Fiz um chat usando socket.io.
O bug q estou enfrentando é o seguinte:
Os primeiros dois usuários que se conectam ao chat conseguem conversar normalmente, porém a partir do 3º usuário as mensagens enviadas pelo mesmo chegam repetidas para os outros usuários!
Por exemplo: O 3º usuário manda a mensagem “Oiee” para o 1º usuário:
User3: Oiee
--------------------
User3: Oiee <---- Mensagem repetida, isso não devia estar aqui
A mensagem se repete 2 vezes.
E o número de repetições aumenta dependendo da “numeração” do usuário: As mensagens do usuário 4 se repetem 3 vezes; As do usuário 5, 4 vezes; E assim sucessivamente.
Código que gerencia o recebimento de mensagens (Front-End):
/* Handle received messages*/
socket.on('receive message', (msg) => {
console.log(msg.sender, 'to', msg.to) //<--- debug
if (!openChats[msg.senderId]) {
openChats[msg.senderId] = [];
}
openChats[msg.senderId].push(msg);
if (socket.chattingWith === msg.senderId){
createMessage('received', msg);
}
});
Através do debug com console.log, eu percebi que o listener desse evento “receive message” está se repetindo, conforme a lógica que expliquei lá em cima.
Código que envia mensagens (back-end):
/*Handle send messages*/
socket.on('send message', (msg) => {
console.log(msg.sender, 'to', msg.to) //<--- debug
io.to(msg.to).emit('receive message', msg)
});
Usei o mesmo debug aqui e o console.log foi executado só uma vez, logo não é o evento “send message” que está sendo repetido.
Não sei se estou perdendo algo na documentação do emit de eventos, mas já pesquisei bastante e não achei nenhuma solução, alguém pode me ajudar?