2013-08-15 13 views
8

Wie kann ich feststellen, ob der Server offline ist oder aus einem anderen Grund keine Verbindung herstellen kann. Mein Code sieht ungefähr so ​​aus.Socket.io verbinden mit Server offline

this.socket = io.connect(connectionInfo, { 
    reconnect:false 
}); 

Es wirft keinen Fehler, so dass eine try/catch-Klausel nicht funktioniert.

Antwort

12

Verwenden

  • this.socket.on("connect") zu Verbindungsereignissen
  • this.socket.on("disconnect") zu fangen Unterbrechungsereignisse
  • this.socket.on("connect_failed") zu fangen ausgefallene Verbindung zu fangen versucht

Verwenden this.socket.io.on ("connect_error ", Callback) zu fangen, wenn der Server offline ist.

können finden Sie alle Events, bei https://github.com/LearnBoost/socket.io/wiki/Exposed-events

+0

Falls diese anderen Leute hilft this-- der Suche nach der „connect_failed“ und „reconnect_failed“ Ereignisse werden in den 0.9.x-Versionen von Socket.io (einschließlich 0.9.16) nicht ordnungsgemäß ausgelöst. Weitere Details finden Sie hier: https://github.com/LearnBoost/socket.io/issues/652 und ein Workaround hier: https://groups.google.com/forum/#!topic/socket_io/7BynuejEmts – mikermcneil

2

Wenn der Server offline ist und Client versuchen, den Einsatz zu verbinden:

socket.on('error', function (err) { 
    console.log(err); 
}); 

So Kunde weiß, dass er den Server nicht erreichen kann.

+1

Nach einigen Tests, Im letzten stabilen Socket.io-Client scheint dies nicht zu funktionieren (v0.9.16) – mikermcneil

4

Seit dem Update 1.0 sind die Verbindungsereignisse unterschiedlich. lesen Sie diese Seite für weitere Informationen: http://socket.io/docs/migrating-from-0-9/

In meinem Fall, ich mag so einen Verbindungsfehler erkennen konnte:

var manager = io.Manager('http://'+window.location.hostname+':3000', { /* options */ }); 
manager.socket('/namespace'); 
manager.on('connect_error', function() { 
    console.log("Connection error!"); 
}); 

this.socket = io.connect('http://'+window.location.hostname+':3000'); 
Verwandte Themen