2014-07-07 7 views
6

मैं एक विश्वसनीय वेबसॉकेट कनेक्शन वसूली तंत्र को लागू करने के लिए चारों ओर देख रहा हूं।विश्वसनीय वेबसॉकेट कनेक्शन राज्य का पता लगाने

कुछ जांच के बाद, मैं अगर मैं पूरे पौंग एक सीमित समय में प्राप्त जाँच पाया है कि एक ही रास्ता सर्वर (पिंग/पोंग) को hearbeats भेज रहा है, और।

इस प्रकार, या तो करता है, तो कनेक्शन वास्तव में बंद है, या यह बहुत धीमी गति से यह पर विचार किया जाएगा है काट दिया है, तो एक प्रतीक्षा समय समाप्ति पौंग, और कोड WebSocket.close() फोन करना चाहिए।

दिन के अंत में, मैं वेबसाकेट का उपयोग कर कनेक्शन-पुन: कनेक्शन वर्कफ़्लो को सत्यापित करने के लिए यह प्रश्न पूछ रहा हूं, और जांचें कि मुझे कुछ याद आ रहा है या नहीं।

यही है, मेरा प्रश्न है, क्या यह वेबसाकेट रीकनेक्शन तंत्र को लागू करने के लिए सही और विश्वसनीय वर्कफ़्लो है?

उत्तर

3

वेबसाइकिल प्रोटोकॉल पिंग और पोंग के लिए विशेष नियंत्रण फ्रेम परिभाषित करता है, लेकिन वे जावास्क्रिप्ट एपीआई के माध्यम से उपलब्ध नहीं हैं। लेकिन अगर सर्वर उन फ्रेम भेजता है, तो ब्राउज़र जवाब देगा।

हालांकि, अगर कनेक्शन अचानक कट हो जाता है और half-open connection बन जाता है, हालांकि सर्वर इसका पता लगाएगा, ब्राउज़र नहीं होगा। तो मुझे लगता है कि आवेदन स्तर पर अपने स्वयं के चित्र भेजना एक बुरा विचार नहीं है।

अपने प्रश्न का उत्तर हाँ, यह अच्छा विचार है क्योंकि यदि कनेक्शन आधा खोला जाता है, तो आपके ग्राहक को अपडेट नहीं मिल रहे हैं क्योंकि उन्हें लगता है कि यह जुड़ा हुआ है। वेबसाकेट में, क्लाइंट को कनेक्शन शुरू करना होता है, इसलिए यदि ब्राउज़र डिस्कनेक्शन को महसूस करता है, तो फिर से कनेक्ट करने के लिए कुछ भी नहीं किया जा सकता है।

+0

हां, आप सही हैं (और आपकी "पुष्टि" के लिए धन्यवाद)। बीटीडब्लू, मोबाइल उपयोग का मामला है, जहां प्रत्येक 20 सेकंड (उदाहरण के लिए) पर पिंग भेजना बैटरी पर प्रभाव डालता है। मेरे मामले में, चूंकि मैं उपयोगकर्ता इनपुट के लिए वेबस्केट का उपयोग नहीं कर रहा हूं, लेकिन सर्वर के लिए धक्का देता है, मैं उपयोगकर्ता को नोटिस करना चाहता हूं कि कनेक्शन में जल्द से जल्द समस्याएं हैं। –

+1

आप एक टाइमस्टैम्प के साथ एक पिंग भेजकर और पोंग में सर्वर को गूंजकर नेटवर्क विलंबता का पता लगा सकते हैं। लेकिन अगर संचार काटा जाता है (यानी: उचित टीसीपी समाप्ति के बिना) यह कहना मुश्किल है कि जब तक आप कुछ भेजने की कोशिश नहीं करते हैं तब तक कटौती की जाती है: http://blog.stephencleary.com/2009/05/detection-of-half-open -dropped.html – vtortola

+0

@vtrola यह एक बहुत ही रोचक लेख है (आप इसे संदर्भ के रूप में अपने उत्तर में क्यों नहीं जोड़ते हैं?)। बीटीडब्ल्यू, मुझे यकीन नहीं है कि अगर मैं ड्रॉप किए गए कनेक्शन का पता लगाने के लिए सही तरीके * के पहले समाधान को समझता हूं। मैं समझता हूं कि यह एक खाली संदेश (एक रखरखाव संदेश) भेजने के बारे में है, और सीमित समय की प्रतीक्षा करें, और यदि कुछ समय में कोई प्रतिक्रिया प्राप्त नहीं होती है, तो कनेक्शन खो जाना माना जाता है। –

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