2012-07-24 8 views
21

मैं अगले कोडsocket.io में पुनः कनेक्ट करने में कॉन्फ़िगर कैसे करें?

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

साथ socket.io कनेक्शन बनाने लेकिन जब मैं मारने सर्वर CTRL + C और इसे फिर से शुरू करते हैं, पुनर्संयोजन नहीं हो रहा है। लेकिन क्लाइंट साइड पर उठाए गए ईवेंट को डिस्कनेक्ट करें। इसका क्या कारण हो सकता है?

+0

डिफ़ॉल्ट विकल्प के साथ, Socket.IO लगभग तुरंत जब मैं सर्वर को पुनः आरंभ मेरे लिए पुन: कनेक्ट हो। क्या आपने कोई विकल्प सेट करने की कोशिश नहीं की है और क्या हुआ है? – Brad

+0

मैंने किसी भी विकल्प को सेट करने की कोशिश नहीं की लेकिन सॉकेट के दस्तावेज़ में पुन: कनेक्शन नहीं हो रहा है – Dmitro

उत्तर

0

पुन: कनेक्शन विलंब बहुत छोटा 500ms बढ़ता है, उस 50 रीट्रीज़ के ऊपर 500 * 50 = 25000 एमएस का मतलब है जो 25 सेकंड है। यदि वह सॉकेट ऑब्जेक्ट को पुन: बनाने के लिए क्लाइंट पक्ष पर त्रुटि ईवेंट पर टाइमआउट सेट करने में मदद नहीं करता है (त्रुटि के बाद और कुछ देरी कनेक्शन बनाने के लिए पुनः प्रयास करें)।

+4

।आईओ-क्लाइंट मैंने पढ़ा है कि "सर्वर से कनेक्ट करने का प्रयास करने से पहले मिलीसेकंड की मात्रा। हम निम्नलिखित पुन: कनेक्शन के लिए घातीय बैक ऑफ एल्गोरिदम का उपयोग कर रहे हैं, प्रत्येक रीकनेक्ट प्रयास पर यह मान गुणा हो जाएगा (500> 1000> 2000> 4000> 8000)। " इसलिए यह बड़ा होगा 25000ms – Dmitro

9

मुझे पता है यह एक पुराने सवाल है, लेकिन मैं फिर से कनेक्ट करने कब सॉकेट के साथ कुछ परेशानी हो रही किया गया है और इस पोस्ट को खोज परिणामों में उच्च पाया, इसलिए सोचा कि मैं contribue होगा। वास्तव में जो घटनाओं निम्नलिखित कोड का उपयोग कर सक्रिय हो रहे हैं डिबगिंग का प्रयास करें:

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

यह आपको ग्राहक सॉकेट की स्थिति में बेहतर जानकारी देने चाहिए।

इसके अलावा, आपके वेब निरीक्षक का नेटवर्क टैब में देख अगर यह एक fallback के रूप में एक्सएचआर अनुरोध फायरिंग कर रहा है देखने के लिए प्रयास करें। अंत में, अपने वेब कंसोल में, io.sockets टाइप करने का प्रयास करें और यह देखने के लिए इसे विस्तारित करें कि यह वास्तव में फिर से कनेक्ट करने का प्रयास कर रहा है या नहीं।

मैं फायरिंग नहीं reconnect_failed, और पुनः कनेक्ट मिलान को रीसेट नहीं के साथ समस्याओं का सामना करना पड़ा। जिथब पर इन मुद्दों के बारे में चर्चा के लिए निम्नलिखित लिंक हैं।

reconnection delay - exponential back off not resetting properly

reconnect_failed gets never fired

some potential fixes/workarounds

25

यह एक पुराने सवाल है, लेकिन मेरे जैसे अन्य लोगों को, जो socket.io (1.x) में फिर से कनेक्ट कॉन्फ़िगर कैसे देख रहे हैं के लिए यहां एक सही वाक्यविन्यास है:

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

यह एक पुरानी क्यूई है शेर, लेकिन v1.4.5 का उपयोग करते समय मेरे पास एक ही सवाल था (एक अलग कारण के लिए)। मेरे चैट रूम एप्लिकेशन खूबसूरती से काम किया, लेकिन जब मैं टर्मिनल में Ctrl+C मारा, अपने ब्राउज़र पाश के लिए जारी रखा और रिपोर्ट हर कुछ सेकंड ERR_CONNECTION_REFUSED जब तक मैं इसे बंद।

पिछले जवाब को बदलने से मुझे थोड़ा सा समाधान मिला।

var socket = io(); 

और यहाँ है समाधान:

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

जाहिर है मैं बदल सकता है

v1.4.5 के लिए, यहाँ "var सॉकेट" मेरे मुवक्किल js फ़ाइल में के लिए अपने मूल कोड है मूल्य अगर मैं चाहता हूं, लेकिन महत्वपूर्ण बात यह है कि इसने कभी खत्म होने वाले अनुरोधों को कभी नहीं मारा।

+0

मुझे एक ही व्यवहार का सामना करना पड़ रहा है कि हर दूसरे के बाद ERR_CONNECTION_REFUSED दिखाई देता है। क्या आप मुझे बता सकते हैं कि क्या कोई ईवेंट उत्पन्न होता है यदि क्लाइंट रीकनेक्ट प्रयास पुन: कनेक्शन के दिए गए मान तक पहुंच गया है स्वीकृति: 5? मैं –

+0

स्थापित करने के प्रयासों की संख्या के बाद क्लाइंट को एक संदेश दिखाना चाहता हूं, यह कार्यक्षमता अंतर्निहित नहीं है। आपको एक चेतावनी बनाना होगा जो निर्दिष्ट मात्रा में पुनर्निर्देशन प्रयासों के बाद ट्रिगर किया गया हो। – elmeltone

+0

अच्छी तरह से मुझे मेरा जवाब मिला है एक घटना नाम "reconnect_failed" है जो विफल प्रयासों की एक्स संख्या के बाद उठाता है। (Https://github.com/socketio/socket.io-client/issues/705) –

संबंधित मुद्दे