How configure reconnecting in socket.io?

34,752

Solution 1

This is an old question, but for other people like me, who are looking how to configure reconnect in socket.io (1.x) here is a correct syntax:

var socket = new io.connect('http://localhost:8181', {
    'reconnection': true,
    'reconnectionDelay': 1000,
    'reconnectionDelayMax' : 5000,
    'reconnectionAttempts': 5
});

Solution 2

I realise this is an old question, but I've been having some trouble with socket io reconnecting and found this post high in the search results, so thought I would contribue. Try debugging exactly which events are firing using the following code:

# coffeescript. compile if you're writing javascript, obviously.

socket.on 'connect',-> console.log 'connected'
socket.on 'reconnect',-> console.log 'reconnect'
socket.on 'connecting',-> console.log 'connecting'
socket.on 'reconnecting',-> console.log 'reconnecting'
socket.on 'connect_failed',-> console.log 'connect failed'
socket.on 'reconnect_failed',-> console.log 'reconnect failed'
socket.on 'close',-> console.log 'close'
socket.on 'disconnect',-> console.log 'disconnect'

This should give you more insight into the state of the client socket.

Also, try looking in the Network tab of your web inspector to see if it is firing XHR requests as a fallback. Finally, in your web console, try typing io.sockets and expand it out to see whether it is actually trying to reconnect or not.

I have encountered problems with reconnect_failed not firing, and the reconnect tally not resetting. The following are links to discussions of these issues on github.

reconnection delay - exponential back off not resetting properly

reconnect_failed gets never fired

some potential fixes/workarounds

Solution 3

This is an old question, but I had the same question (for a different reason) when using v1.4.5. My chat room app worked beautifully, but when I hit Ctrl+C in the terminal, my browser continued to loop and report ERR_CONNECTION_REFUSED every few seconds until I shut it down.

Changing a previous answer just a bit gave me the solution.

For v1.4.5, here is my original code for "var socket" in my client js file:

    var socket = io();

And here is the solution:

    var socket = io({
        'reconnection': true,
        'reconnectionDelay': 1000,
        'reconnectionDelayMax' : 5000,
        'reconnectionAttempts': 5
    });

Obviously I could change the values if I want, but the important point is that this killed the never ending reconnection requests.

Share:
34,752
Dmitro
Author by

Dmitro

Updated on June 15, 2020

Comments

  • Dmitro
    Dmitro almost 4 years

    I create socket.io connection with next code

    var socket = new io.connect('http://localhost:8181', {
        'reconnect': true,
        'reconnection delay': 500,
        'max reconnection attempts': 50
    });
    

    But when I kill server CTRL+C and start it again, reconnection isn't happening. But disconnect event raised on client side. What maybe reason of it?