2012-07-24 3 views
21

Ich schaffe Socket.io Verbindung mit dem nächsten CodeWie konfigurieren Sie das erneute Verbinden in socket.io?

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

Aber wenn ich Server STRG + C töten und erneut starten, erneute Verbindung ist nicht passiert. Trennen Sie das Ereignis jedoch auf der Clientseite. Was vielleicht Grund dafür?

+0

Mit den Standardoptionen verbindet Socket.IO fast sofort wieder, wenn ich den Server neu starte. Haben Sie versucht, keine Optionen einzustellen und zu sehen, was passiert? – Brad

+0

Ich habe versucht, keine Optionen zu setzen, aber die Wiederverbindung findet nicht statt – Dmitro

Antwort

0

Reconnection Verzögerung ist zu klein 500ms erhöhen, dass 50 Wiederholungen bedeutet 500 * 50 = 25000 ms, was 25 Sekunden ist. Wenn das nicht hilft, setzen Sie ein Zeitlimit für das Fehlerereignis auf der Client-Seite, um das Socket-Objekt neu zu erstellen (Nach dem Fehler und einigen Verzögerungen versuchen Sie erneut, eine Verbindung herzustellen).

+4

In Doc des Sockets.io-client Ich lese "Die Anzahl der Millisekunden, bevor wir versuchen, eine Verbindung zum Server herzustellen. Wir verwenden einen Exponential-Back-Off-Algorithmus für die folgenden Reconnections. Bei jedem erneuten Verbindungsaufbau wird dieser Wert multipliziert (500> 1000> 2000>) 4000> 8000). " also ist es größer als 25000ms – Dmitro

9

Ich weiß, das ist eine alte Frage, aber ich habe einige Probleme mit der Socket-IO-Verbindung und fand diesen Beitrag hoch in den Suchergebnissen, so dachte, ich würde beitragen. Versuchen Sie, genau das Debuggen, welche Ereignisse mit dem folgenden Code feuern:

# 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 mehr Einblick in den Zustand der Client-Socket geben.

Versuchen Sie auch, in der Registerkarte "Netzwerk" Ihres Webinspektors nachzusehen, ob XHR-Anfragen 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 nicht feuern, und die Reconnect-Tally nicht zurücksetzen gefunden. Im Folgenden finden Sie Links zu Diskussionen zu diesen Problemen auf GitHub.

reconnection delay - exponential back off not resetting properly

reconnect_failed gets never fired

some potential fixes/workarounds

25

Dies ist eine alte Frage, aber für andere Leute wie mich, die suchen, wie in socket.io (1.x) wieder konfigurieren Hier ist eine korrekte Syntax:

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

Dies ist eine alte que Ich hatte die gleiche Frage (aus einem anderen Grund) bei der Verwendung von v1.4.5. Meine Chat-Room-App funktionierte wunderbar, aber als ich im Terminal auf Ctrl+C drückte, fuhr mein Browser fort, alle paar Sekunden zu wiederholen und ERR_CONNECTION_REFUSED zu melden, bis ich es heruntergefahren habe.

Eine frühere Antwort nur ein bisschen zu ändern gab mir die Lösung.

Für v1.4.5, hier ist mein ursprünglicher Code für "var socket" in der Datei meines Mandanten js:

var socket = io(); 

Und hier ist die Lösung:

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

Offensichtlich konnte ich das ändern Werte, wenn ich will, aber der wichtige Punkt ist, dass dies die nie endenden Wiederverbindungsanfragen tötete.

+0

Ich habe das gleiche Verhalten, dass ERR_CONNECTION_REFUSED nach jeder Sekunde auftreten. Können Sie mir sagen, gibt es irgendein Ereignis zu generieren, wenn Client Reconnect-Versuch den angegebenen Wert von reconnectionAttempts erreicht: 5? Ich möchte eine Nachricht an einen Client anzeigen, nachdem die Anzahl der Verbindungsversuche nicht hergestellt wurde –

+0

Diese Funktionalität ist nicht integriert. Sie müssten selbst eine Benachrichtigung erstellen, die nach einer bestimmten Anzahl von Verbindungswiederholungsversuchen ausgelöst wird. – elmeltone

+0

Nun, ich habe meine Antwort gibt es einen Ereignisnamen "reconnect_failed", die nach x Anzahl der fehlgeschlagenen Versuche erhöhen. (https://github.com/socketio/socket.io-client/issues/705) –

Verwandte Themen