पृष्ठभूमि
MQTT (संदेश कतारबद्ध टेलीमेट्री ट्रांसपोर्ट) एक आईएसओ मानक प्रकाशित-सदस्यता-आधारित मैसेजिंग प्रोटोकॉल ( विकिपीडिया ) है।
प्रत्येक संदेश में एक विषय होता है, जैसे निम्नलिखित उदाहरण:
myhome/groundfloor/livingroom/temperature
USA/California/San Francisco/Silicon Valley
5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status
Germany/Bavaria/car/2382340923453/latitude
MQTT क्लाइंट वाइल्डकार्ड का उपयोग करके संदेश विषयों की सदस्यता ले सकते हैं:
- एकल स्तर:
+
- सभी स्तरों के बाद:
#
उदाहरण के लिए, सदस्यता myhome/groundfloor/+/temperature
इन परिणामों ( बोल्ड में गैर-अनुरूपता ) का उत्पादन करेगी :
✅ MyHome / groundfloor / livingroom / तापमान
✅ MyHome / groundfloor / रसोई / तापमान
❌ MyHome / groundfloor / livingroom / चमक
❌ MyHome / firstfloor / livingroom / तापमान
❌ गेराज / groundfloor / फ्रिज / तापमान
जबकि सदस्यता +/groundfloor/#
इन परिणामों का उत्पादन करेगी:
✅ MyHome / groundfloor / livingroom / तापमान
✅ MyHome / groundfloor / रसोई / चमक
✅ गेराज / groundfloor / फ्रिज / तापमान / अधिक / विशिष्ट / क्षेत्रों
❌ MyHome / firstfloor / livingroom / तापमान
❌ MyHome / तहखाने / कोने / तापमान
अधिक जानकारी यहाँ ।
काम
एक समारोह / कार्यक्रम को लागू करें दो तार को स्वीकार करने और एक बूलियन वापस करने के लिए। पहला तार विषय का विषय है, दूसरा मापदंड विषय है। मापदंड विषय उपर्युक्त विस्तृत सदस्यता सिंटैक्स का उपयोग करता है। फ़ंक्शन सत्य है जब विषय मापदंड से मेल खाता है।
इस कार्य के लिए नियम:
- विषय ASCII हैं
#
वाइल्डकार्ड से परे कोई मानदंड फ़ील्ड नहीं हैं- वाइल्डकार्ड विषय विषयों में दिखाई नहीं देते हैं
- विषय क्षेत्रों की संख्या> = मापदंड क्षेत्रों की संख्या
- कोई 0-वर्ण फ़ील्ड नहीं हैं और न ही आगे की स्लैश के लिए अग्रणी या टेलिंग है
परीक्षण के मामलों
मानदंड 1 = "म्योम / ग्राउंडफ्लोर / + / तापमान"
मानदंड 2 = "+ / ग्राउंडफ्लोर / #"
("एबीसी", "एब") => असत्य
("एबीसी", "एबीसी") => सच
("abc / de", "abc") => false
("myhome / groundfloor / Livingroom / तापमान", मानदंड 1) ) => सत्य
("myhome / groundfloor / रसोई / तापमान", मापदंड 1) => true
("myhome / groundfloor / Livingroom / Bright", मापदंड 1) => झूठा
("myhome / firstfloor / लिविंग रूम / तापमान", मापदंड 1) = > झूठा
("गेराज / ग्राउंडफ्लोर / फ्रिज / तापमान", मानदंड 1) => झूठा
("मायहोम / ग्राउंडफ्लोर / लिविंगरूम / तापमान", मानदंड 2) => सच
("मायहोम / ग्राउंडफ्लोर (रसोई / चमक"), मापदंड 2) => सच
( "गेराज / ग्राउंडफ्लोर / फ्रिज / तापमान / अधिक / विशिष्ट / क्षेत्र ", मानदंड 2) => सत्य
(" मिथहोम / फर्स्ट्लोर / लिविंगरूम / तापमान ", मानदंड 2) => असत्य
("myhome / तहखाने / कोने / तापमान", मानदंड 2) => झूठा
("संगीत / केई $ हा / नवीनतम", "+ / केई $ हा / +") => सच
a/b/c
मानदंड से मेल नहीं खाताa/b
, इसलिए मैं नहीं कहना चाह रहा हूं ।