2013-08-15 9 views
8

मैं कैसे पता लगा सकता हूं कि सर्वर ऑफ़लाइन है या किसी अन्य कारण से कनेक्ट नहीं हो सकता है। मेरा कोड ऐसा कुछ दिखता है।सॉकेट.io सर्वर ऑफ़लाइन से कनेक्ट

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

यह कोई त्रुटि नहीं फेंकता है, इसलिए एक कोशिश/पकड़ खंड काम नहीं कर रहा है।

उत्तर

12

कनेक्शन घटनाओं

  • this.socket.on("disconnect") में विफल रहा है कनेक्शन को पकड़ने के लिए वियोग घटनाओं
  • this.socket.on("connect_failed") को पकड़ने के लिए पकड़ने के लिए उपयोग

    • this.socket.on("connect") प्रयास करता

    उपयोग this.socket.io.on ("connect_error "कॉलबैक) सर्वर को ऑफलाइन होने पर पकड़ने के लिए।

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

  • +0

    मामले में यह this-- खोजने अन्य लोगों में मदद करता है "connect_failed" और "reconnect_failed" Socket.io के 0.9.x संस्करणों (0.9.16 सहित) में घटनाओं को ठीक तरह से निकाल दिया नहीं जाता है। यहां अधिक जानकारी: https://github.com/LearnBoost/socket.io/issues/652 और यहां एक वर्कअराउंड: https://groups.google.com/forum/#!topic/socket_io/7BynuejEmts – mikermcneil

    2

    पर, सभी घटनाओं मिलते हैं, तो अपने सर्वर ऑफ़लाइन है और ग्राहकों का उपयोग कनेक्ट करने के लिए कोशिश करता है:

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

    तो ग्राहक जानता है वह सर्वर तक नहीं पहुंच सकते हैं।

    +1

    कुछ परीक्षणों के बाद, यह नवीनतम स्थिर Socket.io क्लाइंट (v0.9.16) में इस तरह काम करने के लिए प्रतीत नहीं होता है – mikermcneil

    4

    1.0 अपडेट के बाद, कनेक्शन ईवेंट अलग हैं। अधिक जानकारी के लिए इस पेज पढ़ें: http://socket.io/docs/migrating-from-0-9/

    मेरे मामले में, मैं बहुत की तरह एक कनेक्शन त्रुटि का पता लगा सकता:

    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'); 
    
    संबंधित मुद्दे