2015-08-03 4 views
9

पर वेबसाकेट्स हमारे पास एक ऐसा एप्लिकेशन है जो सर्वर से कनेक्ट होता है और इसे हर 15 सेकंड में स्थिति भेजता है। अब हमारे क्लाइंट ने हमारे वर्तमान टीसीपी/आईपी कनेक्शन को वेबस्केट में "अपग्रेड" करने के लिए कहा है। इसका कारण यह है कि उसने सुना है कि यह कम बैंडविड्थ का इस्तेमाल करता है और वह 15 सेकंड से 1 सेकंड कम करना चाहता है। (सार्वजनिक अनुप्रयोग नहीं है इसलिए बैटरी नाली वास्तव में कोई समस्या नहीं है)लाभ टीसीपी/आईपी

मैंने पहले से ही कुछ शोध और कई वेबसाकेट बनाम HTTP तुलना की हैं लेकिन वेबसॉकेट बनाम टीसीपी/आईपी की केवल 2 या 3 तुलनाएं हैं।

मैं पहले से ही पता चला है कि:

  1. WebSockets मूल रूप से टीसीपी/आईपी लेकिन टीसीपी/आईपी WebSockets की तुलना में कम स्तर पर काम करता है के रूप में ही कर रहे हैं।
  2. वेबसाकेट कम बैंडविड्थ का उपयोग कर सकते हैं क्योंकि इसका प्रोटोकॉल हमारे वर्तमान प्रोटोकॉल से अधिक कुशल हो सकता है।
  3. वेबसाकेट सर्वर के पक्ष में अधिक संसाधनों का उपयोग करते हैं।

मेरा प्रश्न है: क्या यह हमारे मौजूदा कोड को बदलने और अच्छे ओएल 'टीसीपी/आईपी सॉकेट के बजाय वेबसाकेट्स का उपयोग करने के लायक है?

उत्तर

11

जैसा कि आप पहले ही जानते हैं, एक वेबसाकेट एक टीसीपी/आईपी कनेक्शन के शीर्ष पर बनाया गया है। यह टीसीपी के शीर्ष पर बनाया गया एक विशिष्ट प्रोटोकॉल है।

मेरा प्रश्न है: यह अपने मौजूदा कोड बदल सकते हैं और अच्छा ol 'टीसीपी/आईपी सॉकेट के बजाय WebSockets के उपयोग करने के लिए इसके लायक है?

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

हमारे पास एक ऐसा एप्लिकेशन है जो किसी सर्वर से कनेक्ट होता है और इसे हर 15 सेकंड में स्थिति भेजता है। अब हमारे क्लाइंट ने वेबसाकेट में हमारे वर्तमान टीसीपी/आईपी कनेक्शन को "अपग्रेड" करने के लिए कहा है। इसका कारण यह है कि उन्होंने इसे कम बैंडविड्थ का उपयोग किया और वह 15 सेकंड से 1 सेकेंड को कम करना चाहता है। (एक समस्या नहीं एक सार्वजनिक आवेदन तो बैटरी समाप्ति वास्तव में नहीं है)

हो या न हो WebSocket अपने मौजूदा TCP कनेक्शन की तुलना में अधिक बैंडविड्थ कुशल होगा क्या प्रोटोकॉल आप TCP कनेक्शन पर अब चला रहे हैं पर पूरी तरह से निर्भर । यदि आपका मौजूदा प्रोटोकॉल बहुत अक्षम है, तो आपको एक अधिक कुशल प्रोटोकॉल का उपयोग करने से लाभ होगा चाहे वह वेबसाकेट हो या कुछ और हो। मुझे आश्चर्य होगा कि यदि वेबसाईट पर स्विच करना 15 सेकंड से 1 सेकेंड तक कुछ भी कम करेगा, तब तक जो आपके पास है उसके कार्यान्वयन वास्तव में वास्तव में अक्षम है।

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


कारणों उस पर कुछ अन्य प्रोटोकॉल के साथ एक सादे टीसीपी कनेक्शन पर एक WebSocket उपयोग करने के लिए में से कुछ इस प्रकार हैं:

  1. जब आप किसी ब्राउज़र से कनेक्ट करने में सक्षम होना चाहता हूँ (ब्राउज़र सादे http अनुरोध और वेबसाकेट कनेक्शन का समर्थन करते हैं - यह है)।

  2. जब आप विशेष रूप से संदेश भेजना चाहते हैं कि वेबसाकेट ऑफ़र प्रतिमान है और आपके पास पहले से ही टीसीपी पर उपयोग करने के लिए एक विशिष्ट प्रोटोकॉल नहीं है (दूसरे शब्दों में जब वेबस्केट आपको अपने प्रोटोकॉल को लागू करने से बचाता है)।

  3. जब आप किसी अन्य प्रकार के क्लाइंट से कनेक्ट करना चाहते हैं जो किसी अन्य प्रोटोकॉल या आपके कस्टम प्रोटोकॉल से अधिक आसानी से और जल्दी से वेबस्केट कनेक्शन का उपयोग कर सकता है।

  4. जब आप किसी वेब सर्वर के साथ पोर्ट साझा करने का प्रयास कर रहे हैं। एक HTTP कनेक्शन के माध्यम से शुरू होने की अपनी प्रकृति के द्वारा जिसे वेबसाकेट प्रोटोकॉल पर स्विच किया जाता है, वेबस्केट एक ही पोर्ट पर एक HTTP सर्वर (वेब ​​सर्वर के साथ साझा करना) के रूप में काम कर सकता है।

  5. जब आप प्रॉक्सी और अन्य नेटवर्क आधारभूत संरचना के साथ इंटरऑपरेबिलिटी चाहते हैं जो http और WebSockets प्रदान करते हैं।

+1

बिंदु संख्या 5 से संबंधित, यह इंगित करने योग्य है कि इंटरऑपरेबिलिटी का अर्थ यह भी है कि फ़ायरवॉल और एनएटी राउटर अधिक अनुकूल हैं, ताकि नेटवर्क यातायात अवरुद्ध होने का एक छोटा सा मौका हो। – Myst

+0

@ मिस्ट - हाँ, यह एक महत्वपूर्ण लाभ हो सकता है। यह निश्चित रूप से कारणों में से एक है कि वेबसाकेट आमतौर पर पोर्ट 80 पर चलते हैं और HTTP कनेक्शन से शुरू होते हैं। – jfriend00

+1

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

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