Cara, sem dúvidas o socket.io é incrivel, mas sempre acabo sofrendo com um problema: o reconnect. No meu caso sempre quando estou conectado em um ws e troco do wifi para 4g e vice-versa, falha em reconectar. Ja procurei a beça e sempre acabo no mesmo cenário, alguma dica?
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