it-swarm.com.de

Jak konfigurovat opětovné připojení v socket.io?

Vytvořím socket.io spojení s dalším kódem

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

Ale když zabiju serverCTRL+Ca znovu ho spusťte, opětovné připojení se neděje. Ale odpojit událost na straně klienta. Co možná důvod?

26
Dmitro

Dies ist eine alte Frage, aber für andere Leute wie mich, die suchen, wie man Reconnect in socket.io (1.x) konfiguriert hier ist eine korrekte Syntax:

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

Mir ist klar, dass dies eine alte Frage ist, aber ich hatte einige Probleme mit Socket Io Reconnecting und fand diesen Beitrag in den Suchergebnissen hoch, also dachte ich, ich würde dazu beitragen. Versuchen Sie genau zu debuggen, welche Ereignisse mit dem folgenden Code ausgelöst werden:

# 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'

Dies sollte Ihnen einen besseren Einblick in den Status des Client-Sockets geben.

Versuchen Sie auch, auf der Registerkarte "Netzwerk" Ihres Web-Inspectors nachzusehen, ob XHR-Anforderungen als Fallback ausgelöst werden. Versuchen Sie schließlich in Ihrer Webkonsole, io.sockets einzugeben, und erweitern Sie es, um zu sehen, ob es tatsächlich versucht, die Verbindung wiederherzustellen oder nicht.

Ich habe Probleme mit reconnect_failed festgestellt, das nicht ausgelöst wurde, und die Reconnect-Zählung wird nicht zurückgesetzt. Im Folgenden finden Sie Links zu Diskussionen zu diesen Themen auf Github.

Wiederherstellungsverzögerung - exponentielles Zurücksetzen wird nicht ordnungsgemäß zurückgesetzt

reconnect_failed wird nie ausgelöst

einige mögliche Korrekturen/Problemumgehungen

10
captainclam

Dies ist eine alte Frage, aber ich hatte die gleiche Frage (aus einem anderen Grund), wenn ich v1.4.5 verwende. Meine Chatroom-App hat wunderbar funktioniert, aber als ich Ctrl+C im Terminal drückte, wiederholte mein Browser die Schleife und meldete alle paar Sekunden ERR_CONNECTION_REFUSED, bis ich ihn herunterfahre.

Das Ändern einer vorherigen Antwort hat mir ein bisschen die Lösung gegeben.

Für Version 1.4.5 ist hier mein ursprünglicher Code für "var socket" in meiner JS-Clientdatei:

    var socket = io();

Und hier ist die Lösung:

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

Natürlich könnte ich die Werte ändern, wenn ich möchte, aber der wichtige Punkt ist, dass dies die nie endenden Wiederverbindungsaufforderungen beendet.

6
elmeltone

wiederverbindungsverzögerung ist zu klein 500ms erhöhen, zusätzlich zu 50 Wiederholungen bedeutet 500 * 50 = 25000 ms, was 25 Sekunden ist. Wenn dies nicht hilft, ein Timeout für ein Fehlerereignis auf Clientseite festzulegen, um das Socket-Objekt neu zu erstellen (After error und einige Verzögerung, um die Verbindung erneut herzustellen).

0
MaX