2013-08-15 26 views
8

Sunucunun çevrimdışı olup olmadığını veya başka bir nedenle bağlanamadığını nasıl anlarım. Kodum böyle bir şeye benziyor.Socket.io sunucuyla bağlan çevrimdışı

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

Bu hataya neden olmaz, bu nedenle bir try/catch deyimi çalışmıyor. Başarısız bağlantıyı yakalamak için kopukluk olayları

  • this.socket.on("connect_failed") yakalamak için bağlantı olayları
  • this.socket.on("disconnect") yakalamak için

  • cevap

    12

    Kullanım

    • this.socket.on("connect")

    Kullanım this.socket.io.on ("connect_error çalışır Sunucu çevrimdışıysa yakalamak için "geri arama".

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

    Yani istemci o sunucuyu ulaşamaz bilir: sunucu çevrimdışı ve İstemci kullanımını bağlanmaya çalışırsa

    Sen https://github.com/LearnBoost/socket.io/wiki/Exposed-events

    +0

    bu bu-- bulma diğer millet olur "connect_failed" ve "reconnect_failed" olaylar, Socket.io'nun 0.9.x sürümlerinde düzgün bir şekilde işlenmez (0.9.16 dahil). Daha fazla ayrıntı burada: https://github.com/LearnBoost/socket.io/issues/652 ve burada bir geçici çözüm: https://groups.google.com/forum/#!topic/socket_io/7BynuejEmts – mikermcneil

    2

    de, tüm etkinlikleri bulabilirsiniz.

    +1

    Bazı testlerden sonra, En son kararlı Socket.io istemcisinde bu şekilde çalışmaz (v0.9.16) – mikermcneil

    4

    1.0 güncellemesinden bu yana, bağlantı olayları farklıdır. fazla bilgi için bu sayfayı okuyun: http://socket.io/docs/migrating-from-0-9/ Benim durumumda

    i şöyle bir bağlantı hatası tespit olabilir: durumda

    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');