MQTT और वेब सॉकेट में क्या अंतर है, और मुझे उनका उपयोग कब करना चाहिए?


17

MQTT और वेब सॉकेट के बीच प्रमुख अंतर क्या हैं?

होम ऑटोमेशन के लिए IoT का उपयोग करते समय - विभिन्न उपकरणों पर नियंत्रण और निगरानी की पहुंच, जिनमें से एक का उपयोग रेस्ट एपीआई आधारित और ब्राउज़र आधारित एक्सेसिबिलिटी की आवश्यकता होने पर किया जाना चाहिए।

मैं एक रास्पबेरी पाई 2 बी + पर जावा (Pi4J लाइब्रेरी) का उपयोग कर रहा हूं।

मेरे पास कई सेंसर हैं जैसे प्रकाश और अंधेरे, आर्द्रता, पीआईडी ​​आदि।

मेरे पास एक क्लाउड सर्वर भी है जहां मैं आवश्यकता पड़ने पर डेटा भेज सकता हूं।


1
आप तय करते हैं कि आपके वर्तमान और संभावित भविष्य की सभी आवश्यकताओं को स्पष्ट रूप से परिभाषित करके किसका उपयोग करना है। फिर आप एक क्रॉस-मैट्रिक्स दिखाते हैं कि कौन सी तकनीक आपकी आवश्यकताओं को पूरा करती है। फिर आप अपनी आवश्यकताओं को पूरा करने के लिए एक या अधिक तकनीकों का उपयोग करना चुनते हैं।

जवाबों:


23

यहाँ सवाल सेटिंग थोड़ा भ्रामक है, क्योंकि वास्तव में इन प्रोटोकॉल को एक साथ तुलना नहीं की जा सकती है। वे टीसीपी और आईपी की तरह हैं, एक दूसरे के ऊपर परतें। [1]

Websockets चीजों को प्रदान करने के लिए एक निम्न स्तर का प्रोटोकॉल है जो इसके 'प्रतियोगी' RESTful http जो कि समान स्तर पर है, प्रदान नहीं करता है: हर अनुरोध पर खुले और बंद होने की आवश्यकता के बिना हमेशा खुला चैनल। [2]

MQTT डेटा प्रकाशित या सदस्यता के लिए एक हल्के वजन का रास्ता प्रदान करता है। भ्रम यह हो सकता है कि वे सदस्यता कुछ प्रकार के चैनल हैं, लेकिन यह विभिन्न प्रकार के चैनल हैं। MQTT में एक निरंतर खुला संबंध बनाने के लिए आपको उसी समय Websockets और MQTT की आवश्यकता होती है।

IoT में, साथ ही किसी भी डिज़ाइन में, आपको यह चुनना होगा कि आपको स्ट्रीम की आवश्यकता है या नहीं (WebSockets vs RESTful) और MQTT के बारे में आपको यह सोचना पड़ सकता है कि क्या आप अपने ऐप पर सदस्यता और प्रकाशन तंत्र चाहते हैं।

कुछ परिस्थितियों पर आप वेबसूट पर MQTT पर विचार कर सकते हैं, यदि कोई सामान्य चीज आसपास हो। [3]

सवाल का जवाब है:

आप कहते हैं कि आपके पास रैस्पररी पाई का सेटअप है और जगह के आसपास कई सेंसर हैं। यदि सेंसर अपने स्वयं के नियंत्रकों के साथ रैस्पररी से दूर हैं, तो आप डेटा एकत्र करने के लिए MQTT का उपयोग कर सकते हैं। डेटा को क्लाउड में संग्रहीत करने के लिए, HTTP में डेटा भेजें। क्लाउड में आराम के माध्यम से डेटा प्रदान करते हैं। [4]

Websockets के लिए कोई आवश्यकता नहीं है, लेकिन यदि आप इसे उपयोगी पाते हैं, तो इसका उपयोग करें।

सूत्रों का कहना है:

[१] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-nontet-of -Things

[२] https://www.pubnub.com/blog/2015-01-05-websockets-vs-rest-ap-understanding-the-difference/

[३] /programming/30624897/direct-mqtt-vs-mqtt-over-websocket

[४] http://www.theinternetofthings.eu/antonio-grasso-mqtt-vs-http-what-best-protocol-iot


3
आपके अंतिम बिंदु के लिए भी प्रासंगिक: रोजर लाइट, मॉस्किटो एमक्यूटीटी ब्रोकर के डेवलपर का यह जवाब कच्चे सॉकेट के उपयोग के मामलों की तुलना एमक्यूटीटी के साथ वेब सॉकेट से करता है।
Aurora0001

धन्यवाद माइक एक अद्भुत व्याख्या है। लेकिन मैं अभी भी स्पष्ट नहीं हूं कि क्या उपयोग करना है .. आप मेरे परिदृश्य के लिए क्या सलाह देंगे?
शक्ति फलियाल

3
शानदार उत्तर, लेकिन: "ओपन एंड क्लोज" WRT WS: // बनाम HTTP: // का उपयोग करना भ्रामक हो सकता है; सबसे पहले, HTTP 1.1 अनुरोधों को पाइपलाइन किया जा सकता है, इसलिए शाब्दिक सॉकेट स्तर पर एक कनेक्शन में उस अर्थ में खुलने और बंद होने के बिना अनुरोधों की अनिश्चित संख्या शामिल हो सकती है। वेबस्कैट का लाभ यह कहना बेहतर होगा कि एक तुल्यकालिक "अनुरोध और प्रतिक्रिया" चक्र के लिए कोई प्रतिबद्धता नहीं है; आपके पास विनिमय के लिए नियमों का एक न्यूनतम सेट के साथ एक खुला, द्वि-दिशात्मक चैनल है।
गोल्डीलॉक्स

"MQTT में एक निरंतर खुला संबंध बनाने के लिए आपको उसी समय Websockets और MQTT की आवश्यकता होती है।" क्या आप इस बारे में निश्चित हैं? कृपया बताएं कि क्यों MQTT को "निरंतर खुला कनेक्शन" रखने के लिए वेबसॉकेट्स का उपयोग करना पड़ता है यदि क्लाइंट सिर्फ सर्वर पर वापस PINGRESP पैकेट प्रकाशित करना जारी रख सकता है? MQTT को लागू करने वाला क्लाइंट कनेक्शन को जीवित रखने के लिए एक PINGRESP पैकेट भेजेगा, और एक ग्राहक जो वेबस्केट का अर्थ लगा रहा है, वह कनेक्शन को जीवित रखने के लिए सर्वर को एक खाली पैकेट webSocket.send ('') भेजने के लिए KeepAlive () का उपयोग करेगा।
जॉन

हम्म .. आप उस पैकेट के साथ कनेक्शन को जीवित रख सकते हैं । मुझे पता चला कि MQTT टीसीपी / आईपी (HTTP नहीं) पर काम करता है। उस स्थिति में आप कनेक्शन को खुला छोड़ सकते हैं।
mic

9

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

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

MQTT में कई अन्य उपयोगी विशेषताएं हैं, जैसे कि बनाए गए संदेश, जैसे कि ग्राहक तुरंत संदेश प्राप्त करते हैं, और LWT (अंतिम इच्छा और वसीयतनामा) जो एक संदेश है जो क्लाइंट को असामान्य रूप से डिस्कनेक्ट होने पर स्वचालित रूप से भेजा जा सकता है। सारांश में, MQTT सुविधाओं और अमूर्तियों को 'स्टैक अप' से अधिक है जो एक साधारण वेबसोकेट नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.