How to reconnect to socket io once disconnect
has been called?
Here's the code
function initSocket(__bool){
if(__bool == true){
socket = io.connect('http://xxx.xxx.xxx.xxx:8081', {secure:false});
socket.on('connect', function(){console.log('connected')});
socket.on('disconnect', function (){console.log('disconnected')});
}else{
socket.disconnect();
socket = null;
}
}
If I do initSocket(true)
, it works. If I do initSocket(false)
, it disconnects. BUT THEN if I try to reconnect using initSocket(true)
, the connection does not work anymore. How can I get the connection to work?
Well, you have an option here ...
The first time you initialize the socket value you should connect with
io.connect
,The next time ( after you've called disconnect once ), you should connect back with
socket.socket.connect()
.So your
initSocket
, should be something likeYou can reconnect by following client side config.
I had an issue with socket-io reconnect. May be this case will help someone. I had code like this:
this is wrong, becase there is a delay between open port assigned callbacks. Some of messages may be lost before DB gets initialized. The right way to fix it is:
I know you already have an answer, but I arrived here because the socket.IO client reconnection feature is broken in node at the moment.
Active bugs on the github repo show that lots of people aren't getting events on connect failure, and reconnect isn't happening automatically.
To work around this, you can create a manual reconnect loop as follows: