2012-10-04 16 views
8

मैं चैट ऐप के लिए सिग्नलआर (0.5.3) हब्स का उपयोग कर रहा हूं जहां प्रत्येक कीस्ट्रोक सर्वर (डीबी में सहेजा गया) भेजा जाता है, सभी ग्राहकों और रिटर्न वैल्यू (प्रकार के स्ट्रिंग टोकन) सर्वर से वापस भेजा जाता है।ऐप पूल रीसायकल पर सिग्नलआर कनेक्शन हैंडलिंग

ऐप पूल रीसायकल होने तक यह ठीक काम करता है, फिर यह सभी ग्राहकों को कीस्ट्रोक को रिले करना बंद कर देता है (क्योंकि इन-मेमोरी सर्वर स्थिति खो जाती है मुझे लगता है) और सर्वर किसी भी मान को वापस नहीं लौटाता है। इस बिंदु पर, मुझे लगता है कि सिग्नलआर के माध्यम से सभी अनुरोध आईआईएस द्वारा कतारबद्ध किए जाते हैं और फिर ऐप पूल को पुनर्नवीनीकरण के बाद संसाधित किया जाता है।

मेरा सवाल यह है कि मैं इस परिदृश्य को कैसे संभाल सकता हूं ताकि सभी क्लाइंट ऐप पूल रीसायकल के कारण सर्वर अनुपलब्ध/देरी से अवगत हों, उपयोगकर्ता को थोड़ी देर इंतजार करने के लिए सूचित करें और फिर पुन: कनेक्ट करने के लिए ऑपरेशन फिर से शुरू करें?

उत्तर

4

दो विकल्प हैं।

0.5.3 के लिए आप यह पता लगा सकते हैं कि क्लाइंट "रीकनेक्टिंग" में कब जाता है या "डिस्कनेक्ट" होता है और उपयोगकर्ता को सूचित करता है कि सर्वर समस्याएं हैं। ज्यादातर परिस्थितियों में ध्यान रखें कि ग्राहक वास्तव में नहीं जानता कि सर्वर डिस्कनेक्ट होने पर डिस्कनेक्ट हो गया है।

या

आप अगली फिल्म (1.0alpha) हम आप के लिए इस के थोक का ख्याल रखेंगे के लिए प्रतीक्षा करें। किसी सर्वर की कमी पर हम एक ऑनकनेक्शन स्लो इवेंट ट्रिगर करेंगे जिसके परिणामस्वरूप क्लाइंट "रीकनेक्ट" में स्थानांतरित हो जाएगा (अगर उसे कोई जानकारी नहीं मिलती है) तब तक जब तक सर्वर ऑनलाइन वापस नहीं आ जाता। ऐप पूल रीसायकल जैसे किनारे के मामलों के लिए ग्राहक यह भी जान लेंगे कि सर्वर दूर चला गया है (हम इस कार्यक्षमता को जोड़ रहे हैं)।

आशा है कि इससे मदद मिलती है!

+0

विकल्प 1 पर: आप सही हैं, क्लाइंट को लंबे समय तक देरी (टाइमआउट) के बाद डिस्कनेक्शन के बारे में पता चल जाता है, इसलिए पुन: कनेक्शन/डिस्कनेक्ट की गई घटनाओं के माध्यम से हैंडलिंग काम नहीं कर सकता है लेकिन मैं अभी भी इसे एक शॉट दूंगा। – Nick

+0

@ टेलर मुलेन - नमस्ते, क्या मैं सोचने में सही हूं कि इसका मतलब है कि अगर सिग्नल सर्वर दूर हो जाता है तो 0.5.3 के रूप में, क्लाइंट टाइमआउट तक पुनः कनेक्ट करने की कोशिश कर सकता है, और क्लाइंट पक्ष पर कोई घटना नहीं हो सकती है इस समय इस पर पता लगाने के लिए इस्तेमाल किया? चीयर्स – Will

+0

@ आंशिक रूप से सही होगा। 0.5.3 में आपको "अब रिकनेक्टिंग" जैसी कोई विशिष्ट घटना नहीं मिलेगी, लेकिन आप यह पता लगा सकते हैं कि सिग्नलर राज्य के माध्यम से पुन: कनेक्ट करने का प्रयास कर रहा है। जब हम पुन: कनेक्ट करने वाले राज्य में जाते हैं तो राज्य परिवर्तनित घटना आग लग जाएगी और नया कनेक्शन राज्य फिर से जुड़ जाएगा। साथ ही, क्लाइंट पर कोई टाइमआउट नहीं है, यह हमेशा के लिए फिर से कनेक्ट करने का प्रयास करेगा। –

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