How To Reconnect After You Called .disconnect()
Question: How do you reconnect a client to the server after you have issued a manual .disconnect()? In my current project, I need to disconnect a client from the server when the us
Solution 1:
The standard approach in latest socket.io is:
socket.on('disconnect', function() {
socket.socket.reconnect();
})
This is what I've been using in my app and works great. It also ensures that the socket keeps trying to reconnect if the server goes way, and eventually reconnects when the server is back online.
In your case, you need to ensure two things:
- You create your socket only once. Don't call
socket = io.connect(...)
more than once. - You setup your event handling only once - otherwise they will be fired multiple times!
So when you want to reconnect the client, call socket.socket.reconnect()
. You can also test this from the browser console in FireFox and Chrome.
Solution 2:
You can reconnect by following client side config.
// for socket.io version 1.0io.connect(SERVER_IP,{'forceNew':true };
Solution 3:
I'm doing this way with socket.io 1.4.5 and it seems to work, for now:
var app = {
socket: null,
connect: function() {
// typical storing of reference to 'app' in this casevarself = this;
// reset the socket// if it's not the first connect() call this will be triggered// I hope this is enough to reset a socketif( self.socket ) {
self.socket.disconnect();
delete self.socket;
self.socket = null;
}
// standard connectiong procedureself.socket = io.connect( 'http://127.0.0.1:3000', { // adapt to your server
reconnection: true, // default setting at present
reconnectionDelay: 1000, // default setting at present
reconnectionDelayMax : 5000, // default setting at present
reconnectionAttempts: Infinity // default setting at present
} );
// just some debug outputself.socket.on( 'connect', function () {
console.log( 'connected to server' );
} );
// important, upon detection of disconnection,// setup a reasonable timeout to reconnectself.socket.on( 'disconnect', function () {
console.log( 'disconnected from server. trying to reconnect...' );
window.setTimeout( 'app.connect()', 5000 );
} );
}
} // var app
app.connect();
Solution 4:
socket.socket.connect();
gets you reconnected.
Solution 5:
It seems to me it is how you handle the disconnect... Worked for me using socket.io - v1.1.0
wrong way...
var sock = io( '/' );
sock.on( 'connect', function(x) { console.log( 'Connected', x ); } );
// now we disconnect at some point:
sock.disconnect();
// now we try to reconnect...
sock.connect()
// or
sock.reconnect();
// - both seem to create the new connection in the debugger, all events are missing though
correct way...
// As above with 3 extra characters, everything functions as expected...//events fire properly...
sock.io.disconnect();
// consequently i'm also using (for consitency)
sock.io.reconnect();
// sock.connect() still seems to work however.
Post a Comment for "How To Reconnect After You Called .disconnect()"