Executando verificação de segurança...
1

Oi Alan. Tudo bem?

De fato, essa é uma dificuldade comum em quem já está desenvolvendo com socket.io

Por que isso ocorre?

Como a biblioteca funciona sobre websocket, o túnel de rede é criado. Ao iniciar um novo túnel, o socket.id é perdido e um novo é gerado criando o fluxo de join novamente

Como podemos resolver

Se a sua aplicação permitir, deixe um id gerado por você associado a uma página (pode ser algo aleatório ou informações de login, caso sua aplicação tenha controle de usuários). Quando você for realizar o seu join, salve no seu server alguma matriz multidimensional que relacione o socket.id com o seu id.

Em caso de queda, seja por refresh da página ou socket.disconect, você pode iniciar uma nova conexão e o socket.IO irá gerar um novo socket.id e caso esse socket.id não esteja relacionado com o seu id, você substitui na sua matriz e faz leave do id antigo e join no id novo

Em alguns trabalhos que já realizei com socket.io, no lado do cliente, eu garantia que a pessoa não duplicasse a página ou não realizasse login em outra máquina. Então, quando alguém logava com alguma conta já logada, a página anterior era desconectada automaticamente e redirecionava para a página de login.

Espero que ajude

Carregando publicação patrocinada...