2010-09-01 22 views
18

यह एक n00b सवाल है, लेकिन मैंने कभी जवाब नहीं दिया है।हमें वेब-सॉकेट की आवश्यकता क्यों है?

तो हमें websockets प्रोटोकॉल की आवश्यकता क्यों है?

और, धूमकेतु शैली/लंबे मतदान/HTTP के जीईटी-स्टाइल उपयोग को लटकाने के फायदे क्या हैं?

उत्तर

17

धूमकेतु और अजाक्स दोनों अंत उपयोगकर्ता अनुभव प्रदान कर सकते हैं जो डेस्कटॉप की तरह की कार्यक्षमता और कम उपयोगकर्ता द्वारा देखी गई विलंबता प्रदान करते हैं, केवल वेब सॉकेट एक मूल माध्यम प्रदान करने के वादे तक रहता है ताकि सटीक और कुशलता से घटनाओं को स्ट्रीम किया जा सके नगण्य विलंबता के साथ ब्राउज़र।

मतदान के साथ यह अनावश्यक अनुरोध करता है और इसके परिणामस्वरूप, कई कनेक्शन खोल रहे हैं और कम संदेश-दर की स्थिति में बेकार में बंद कर दिया। (जैसा कि मतदान के साथ नियमित अंतराल पर HTTP अनुरोध भेजता है और तुरंत एक प्रतिक्रिया प्राप्त करता है।)

वेब सॉकेट ओवरहेड को हटा दें और नाटकीय रूप से जटिलता को कम करें।

+8

वेब सॉकेट हैं AJAX के लाइव: अपडेट किया सही :) – Lethargy

+0

अपनी टिप्पणी @Lethargy बना कर भावना से ऊपर सभी तकनीक बात ... धन्यवाद :) –

0

यह स्पष्ट नहीं है कि हमें उनकी आवश्यकता है। क्लाइंट को ईवेंट को धक्का देने के परिदृश्य में, एक पृष्ठ लूप में सामान्य AJAX GET अनुरोध कर सकता है, और सर्वर उपलब्ध होने तक सर्वर "लटका" सकता है। कुछ टाइमआउट पास होने के बाद सर्वर "कोई घटना नहीं" प्रतिक्रिया वापस कर सकता है ताकि क्लाइंट फिर से कनेक्ट हो सके। उस अवधि के दौरान जहां कनेक्शन खुला है और ग्राहक प्रतिक्रिया के लिए इंतजार कर रहा है, सर्वर से सर्वर पर एक प्रभावी पुश चैनल है।

टाइमआउट अवधि को अनावश्यक पुन: कनेक्ट करने की मात्रा को कम करने के लिए समायोजित किया जा सकता है, हालांकि यह आमतौर पर अनंत नहीं हो सकता है क्योंकि अधिकांश सर्वर ढांचे सर्वर-साइड प्रक्रिया को समाप्त कर देते हैं यदि ऐसा लगता है कि यह बहुत लंबा है।

इस मौजूदा क्षमता को देखते हुए, सवाल यह है: क्या एक नया संचार ढांचा वास्तव में महत्वपूर्ण मूल्य जोड़ सकता है जो पहले से ही किया जा सकता है? यह वास्तव में ऐसा कुछ सक्षम नहीं करेगा जो नहीं किया जा सकता है। यह केवल थोड़ा सुधार होगा।

+1

कैसे आप कुछ लागू करेगा 'XmlHttpRequest' का उपयोग कर बिटटोरेंट क्लाइंट या वीएनसी क्लाइंट की तरह? –

+0

आप HTTP पर एक समान प्रोटोकॉल को खाना बनाकर "कुछ ऐसा" लागू करेंगे। एक मजाक के लिए मैंने एक बार HTTP पर सॉकेट सुरंग प्रॉक्सी किया था, जहां एक तरफ एक वेब ऐप पर डेटा पोस्ट करेगा और दूसरी तरफ डेटा पढ़ेगा और इसे फेरी करेगा, इस प्रकार कई अलग-अलग HTTP लेनदेन के मामले में एक स्ट्रीम सिमुलेट करेगा। मेरे आश्चर्य के लिए यह वास्तव में माइक्रोसॉफ्ट रिमोट डेस्कटॉप सत्रों के लिए एक कंडिट के रूप में काफी उपयोगी था। किसी भी मौजूदा प्रोटोकॉल को इस तरह से नकल किया जा सकता है। काफी क्यों आप यह करना चाहते हैं यह एक और सवाल है। –

+1

गति और सादगी। एक लूप में AJAX GET अनुरोध एक बदसूरत, धीमी हैक एक ही चीज़ प्रदान करने के लिए हैं जो websockets स्पष्ट रूप से और सुंदर ढंग से प्रदान करते हैं। हाँ कृपया। –

8

1-WebSocket एक स्वाभाविक रूप से पूर्ण द्वैध, द्विदिश, एकल गर्तिका कनेक्शन है। वेबसॉकेट के साथ, आपका HTTP अनुरोध एक वेबस्केट कनेक्शन खोलने के लिए एकल अनुरोध बन जाता है और क्लाइंट से सर्वर तक सर्वर और सर्वर से उसी कनेक्शन का पुन: उपयोग करता है।

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

3-वेबसाकेट रीयल-टाइम संचार को और अधिक कुशल बनाता है। HTTP पर सूचनाएं प्राप्त करने के लिए आप हमेशा HTTP पर मतदान (और कभी-कभी स्ट्रीमिंग) का उपयोग कर सकते हैं। हालांकि, वेबस्केट बैंडविड्थ, सीपीयू पावर, और विलंबता बचाता है। वेबसाकेट प्रदर्शन में एक नवाचार है।

4-वेबसॉकेट एक अंतर्निहित नेटवर्क प्रोटोकॉल है जो आपको इसके शीर्ष पर अन्य मानक प्रोटोकॉल बनाने में सक्षम बनाता है।

5-वेबसाकेट अन्य प्लेटफॉर्म के साथ प्रतिस्पर्धा करने के लिए क्रम में HTML5 अनुप्रयोगों में उन्नत क्षमताओं को प्रदान करने के प्रयास का हिस्सा है।

6-WebSocket सादगी के बारे में है

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