Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Socket IO reconnect?

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?

like image 753
Eric Avatar asked May 03 '12 18:05

Eric


People also ask

Does Socket.IO auto reconnect?

In the first case, the Socket will automatically try to reconnect, after a given delay.

How do I reconnect a Socket.IO client?

You can reconnect by following client side config. I don't think forceNew means reconnect. I believe it means to create a new socket each time this statement is called because normally io. connect() will return the same socket if you call it a second time.

How do I connect to a Socket.IO server?

listen(port); // Create a Socket.IO instance, passing it our server var socket = io. listen(server); // Add a connect listener socket. on('connection', function(client){ console. log('Connection to client established'); // Success!

How can I tell if Socket.IO is connected?

You can check the socket. connected property: var socket = io. connect(); console.


1 Answers

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 like

function initSocket(__bool){                         if(__bool){                   if ( !socket ) {                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.socket.connect(); // Yep, socket.socket ( 2 times )         }     }else{         socket.disconnect();         // socket = null; <<< We don't need this anymore     } }  
like image 179
drinchev Avatar answered Oct 01 '22 17:10

drinchev