अपनी पसंद के हार्डवेयर डिवाइस से कम्यूनिकेट करने के लिए, सही एपीआई चुनें.
इस गाइड का मकसद, वेब पर किसी हार्डवेयर डिवाइस (जैसे, वेबकैम, माइक्रोफ़ोन वगैरह) के साथ कम्यूनिकेट करने के लिए सबसे सही एपीआई चुनने में आपकी मदद करना है. "सबसे सही" से मेरा मतलब है कि यह आपको कम से कम मेहनत में वह सब कुछ देता है जिसकी आपको ज़रूरत है. दूसरे शब्दों में, आपको पता है कि आपको किस समस्या को हल करना है.जैसे, वीडियो ऐक्सेस करना. हालांकि, आपको यह नहीं पता कि किस एपीआई का इस्तेमाल करना है या इसे हासिल करने का कोई दूसरा तरीका है या नहीं.
मैंने अक्सर देखा है कि वेब डेवलपर, हाई-लेवल एपीआई के बारे में जाने बिना ही लो-लेवल एपीआई का इस्तेमाल करने लगते हैं. हाई-लेवल एपीआई को लागू करना आसान होता है और इनसे बेहतर उपयोगकर्ता अनुभव मिलता है. इसलिए, इस गाइड में सबसे पहले, हायर-लेवल एपीआई का सुझाव दिया गया है. हालांकि, इसमें लोअर-लेवल एपीआई के बारे में भी बताया गया है. ऐसा इसलिए किया गया है, ताकि अगर आपको लगे कि हायर-लेवल एपीआई आपकी ज़रूरतों को पूरा नहीं करता है, तो आपके पास लोअर-लेवल एपीआई का विकल्प हो.
🕹 इस डिवाइस से इनपुट इवेंट पाना
कीबोर्ड और पॉइंटर इवेंट को सुनने की कोशिश करें. अगर यह डिवाइस कोई गेम कंट्रोलर है, तो Gamepad API का इस्तेमाल करके जानें कि कौनसे बटन दबाए जा रहे हैं और कौनसे ऐक्सिस मूव किए जा रहे हैं.
अगर इनमें से कोई भी विकल्प आपके काम नहीं आता, तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपने डिवाइस से बातचीत करने का तरीका जानने के लिए, अपने डिवाइस से बातचीत करने का तरीका जानें लेख पढ़ें.
📸 इस डिवाइस से ऑडियो और वीडियो ऐक्सेस करना
इस डिवाइस से लाइव ऑडियो और वीडियो स्ट्रीम पाने के लिए, MediaDevices.getUserMedia() का इस्तेमाल करें. साथ ही, ऑडियो और वीडियो कैप्चर करने के बारे में जानें. आपके पास कैमरे के पैन, टिल्ट, और ज़ूम को कंट्रोल करने का विकल्प भी होता है. साथ ही, कैमरे की अन्य सेटिंग को भी कंट्रोल किया जा सकता है. जैसे, चमक और कंट्रास्ट. इसके अलावा, स्टिल इमेज भी ली जा सकती हैं. वेब ऑडियो का इस्तेमाल, ऑडियो में इफ़ेक्ट जोड़ने, ऑडियो विज़ुअलाइज़ेशन बनाने या स्पेशल इफ़ेक्ट (जैसे, पैनिंग) लागू करने के लिए किया जा सकता है. Chrome में वेब ऑडियो ऐप्लिकेशन की परफ़ॉर्मेंस को प्रोफ़ाइल करने का तरीका भी देखें.
अगर इनमें से कोई भी विकल्प आपके काम नहीं आता, तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपने डिवाइस से बातचीत करने का तरीका जानने के लिए, अपने डिवाइस से बातचीत करने का तरीका जानें लेख पढ़ें.
🖨 इस डिवाइस से प्रिंट करें
window.print() का इस्तेमाल करके, ब्राउज़र डायलॉग खोलें. इससे उपयोगकर्ता, मौजूदा दस्तावेज़ को प्रिंट करने के लिए, इस डिवाइस को डेस्टिनेशन के तौर पर चुन सकता है.
अगर इससे आपकी समस्या हल नहीं होती है, तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपना सफ़र शुरू करने के लिए, अपने डिवाइस से कम्यूनिकेट करने का तरीका जानें लेख पढ़ें.
🔐 इस डिवाइस से पुष्टि करना
उपयोगकर्ताओं की पुष्टि करने के लिए, इस हार्डवेयर सुरक्षा डिवाइस के साथ एक मज़बूत, प्रमाणित, और ऑरिजिन-स्कोप वाले सार्वजनिक पासकोड क्रेडेंशियल बनाने के लिए, WebAuthn का इस्तेमाल करें. यह ब्लूटूथ, एनएफ़सी, और यूएसबी-रोमिंग U2F या FIDO2 ऑथेंटिकेटर के इस्तेमाल के साथ काम करता है. इन्हें सुरक्षा कुंजियां भी कहा जाता है. साथ ही, यह प्लैटफ़ॉर्म ऑथेंटिकेटर के साथ भी काम करता है. इससे उपयोगकर्ता, अपने फ़िंगरप्रिंट या स्क्रीन लॉक की मदद से पुष्टि कर सकते हैं. अपना पहला WebAuthn ऐप्लिकेशन बनाएं लेख पढ़ें.
अगर यह डिवाइस किसी अन्य तरह का हार्डवेयर सिक्योरिटी डिवाइस है (जैसे, क्रिप्टो करंसी वॉलेट), तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपना सफ़र शुरू करने के लिए, अपने डिवाइस से बातचीत करने का तरीक़ा जानें पर जाएँ.
🗄 इस डिवाइस पर मौजूद फ़ाइलें ऐक्सेस करना
फ़ाइल सिस्टम ऐक्सेस एपीआई का इस्तेमाल करके, उपयोगकर्ता के डिवाइस पर मौजूद फ़ाइलों और फ़ोल्डर को पढ़ा जा सकता है. साथ ही, उनमें किए गए बदलावों को सीधे सेव किया जा सकता है. अगर यह उपलब्ध नहीं है, तो File API का इस्तेमाल करके, उपयोगकर्ता से ब्राउज़र डायलॉग से लोकल फ़ाइलें चुनने के लिए कहें. इसके बाद, उन फ़ाइलों का कॉन्टेंट पढ़ें.
अगर इनमें से कोई भी विकल्प आपके काम नहीं आता, तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपने डिवाइस से बातचीत करने का तरीका जानने के लिए, अपने डिवाइस से बातचीत करने का तरीका जानें लेख पढ़ें.
🧲 इस डिवाइस पर सेंसर ऐक्सेस करें
जेनेरिक सेंसर एपीआई का इस्तेमाल करके, मोशन सेंसर (जैसे, एक्सेलेरोमीटर या जाइरोस्कोप) और एनवायरमेंटल सेंसर (जैसे, ऐंबियंट लाइट, मैग्नेटोमीटर) से रॉ सेंसर वैल्यू को पढ़ा जा सकता है. अगर यह उपलब्ध नहीं है, तो मोबाइल डिवाइसों में पहले से मौजूद एक्सलरोमीटर, जाइरोस्कोप, और कंपास को ऐक्सेस करने के लिए, DeviceMotion और DeviceOrientation इवेंट का इस्तेमाल करें.
अगर यह आपके लिए काम नहीं करता है, तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपना सफ़र शुरू करने के लिए, अपने डिवाइस से कम्यूनिकेट करने का तरीका जानें लेख पढ़ें.
🛰 इस डिवाइस पर जीपीएस कोऑर्डिनेट ऐक्सेस करना
इस डिवाइस पर उपयोगकर्ता की मौजूदा जगह के अक्षांश और देशांतर की जानकारी पाने के लिए, Geolocation API का इस्तेमाल करें.
अगर यह आपके लिए काम नहीं करता है, तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपने डिवाइस से कम्यूनिकेट करने का तरीका जानने के लिए, अपने डिवाइस से कम्यूनिकेट करने का तरीका जानें पर जाएं.
🔋 इस डिवाइस की बैटरी की जांच करें
Battery API का इस्तेमाल करके, बैटरी के चार्ज लेवल के बारे में होस्ट की जानकारी पाएं. साथ ही, बैटरी लेवल या चार्जिंग की स्थिति बदलने पर सूचना पाएं.
अगर यह आपके लिए काम नहीं करता है, तो लो-लेवल एपीआई का इस्तेमाल किया जा सकता है. अपना सफ़र शुरू करने के लिए, अपने डिवाइस से कम्यूनिकेट करने का तरीका जानें लेख पढ़ें.
📞 नेटवर्क पर इस डिवाइस से कम्यूनिकेट करना
लोकल नेटवर्क में, रिमोट प्लेबैक डिवाइस (जैसे, स्मार्ट टीवी या वायरलेस स्पीकर) पर ऑडियो और/या वीडियो ब्रॉडकास्ट करने के लिए, Remote Playback API का इस्तेमाल करें. इसके अलावा, दूसरी स्क्रीन (जैसे, एचडीएमआई केबल से कनेक्ट किया गया सेकंडरी डिसप्ले या वायरलेस तरीके से कनेक्ट किया गया स्मार्ट टीवी) पर वेब पेज रेंडर करने के लिए, Presentation API का इस्तेमाल करें.
अगर यह डिवाइस किसी वेब सर्वर को एक्सपोज़ करता है, तो सही एंडपॉइंट पर हिट करके इस डिवाइस से कुछ डेटा फ़ेच करने के लिए, Fetch API और/या WebSockets का इस्तेमाल करें. टीसीपी और यूडीपी सॉकेट, वेब पर उपलब्ध नहीं हैं. इंटरैक्टिव, दोनों तरफ़ से होने वाले, और मल्टीप्लेक्स किए गए नेटवर्क कनेक्शन को मैनेज करने के लिए, WebTransport देखें. ध्यान दें कि WebRTC का इस्तेमाल, पीयर-टू-पीयर प्रोटोकॉल का इस्तेमाल करके, अन्य ब्राउज़र के साथ रीयल-टाइम में डेटा शेयर करने के लिए भी किया जा सकता है.
🧱 अपने डिवाइस से कम्यूनिकेट करने का तरीका जानें
आपको किस लो-लेवल एपीआई का इस्तेमाल करना चाहिए, यह इस बात से तय होता है कि डिवाइस से आपका फ़िज़िकल कनेक्शन किस तरह का है. अगर यह वायरलेस है, तो बहुत कम रेंज वाले वायरलेस कनेक्शन के लिए वेब एनएफ़सी देखें. साथ ही, आस-पास के वायरलेस डिवाइसों के लिए वेब ब्लूटूथ या वेब सीरियल देखें.
वेब एनएफ़सी की मदद से, इस डिवाइस पर डेटा को पढ़ा और लिखा जा सकता है. ऐसा तब किया जा सकता है, जब यह डिवाइस उपयोगकर्ता के डिवाइस के आस-पास हो. आम तौर पर, यह दूरी 5 से 10 सें॰मी॰ या 2 से 4 इंच होनी चाहिए. NXP के एनएफ़सी टैगइन्फ़ो जैसे टूल की मदद से, इस डिवाइस के कॉन्टेंट को ब्राउज़ किया जा सकता है. इससे रिवर्स-इंजीनियरिंग की जा सकती है.
वेब ब्लूटूथ की मदद से, इस डिवाइस को ब्लूटूथ लो एनर्जी कनेक्शन से कनेक्ट करें. अगर कोई डिवाइस, स्टैंडर्ड ब्लूटूथ GATT सेवाओं (जैसे, बैटरी सेवा) का इस्तेमाल करता है, तो उसके साथ कम्यूनिकेट करना काफ़ी आसान होता है. ऐसा इसलिए, क्योंकि उनके काम करने के तरीके के बारे में अच्छी तरह से बताया गया है. अगर ऐसा नहीं है, तो आपको इस डिवाइस के लिए हार्डवेयर से जुड़ा कोई दस्तावेज़ ढूंढना होगा या इसे रिवर्स-इंजीनियर करना होगा. इसके लिए, nRF Connect for Mobile जैसे बाहरी टूल और ब्राउज़र में पहले से मौजूद टूल इस्तेमाल किए जा सकते हैं. जैसे, Chromium पर आधारित ब्राउज़र में मौजूद इंटरनल पेज
about://bluetooth-internals. यूरी शेक्ड का रिवर्स-इंजीनियरिंग अ ब्लूटूथ लाइटबल्ब देखें. ध्यान दें कि ब्लूटूथ डिवाइस, एचआईडी या सीरियल प्रोटोकॉल का भी इस्तेमाल कर सकते हैं.सीरियल ओवर ब्लूटूथ की मदद से, स्टैंडर्ड सीरियल पोर्ट प्रोफ़ाइल (एसपीपी) जैसे ब्लूटूथ क्लासिक डिवाइसों पर आरएफ़सीओएमएम सेवाओं के साथ कम्यूनिकेट करें. हालांकि, आरएफ़सीओएमएम पर आधारित कस्टम सेवाओं के लिए, आपको डिवाइस के वेंडर के दस्तावेज़ देखने होंगे. इससे आपको सेवा का यूयूआईडी मिलेगा, जिसे
requestPort()को पास करना होगा.
अगर वायर वाला कनेक्शन है, तो इन एपीआई को इस क्रम में देखें:
WebHID की मदद से, एचआईडी रिपोर्ट और रिपोर्ट डिस्क्रिप्टर को कलेक्शन के ज़रिए समझना, इस डिवाइस को समझने के लिए ज़रूरी है. इस डिवाइस के लिए वेंडर के दस्तावेज़ के बिना, ऐसा करना मुश्किल हो सकता है. Wireshark जैसे टूल, इसकी रिवर्स इंजीनियरिंग करने में आपकी मदद कर सकते हैं. एचआईडी डिवाइसों की जानकारी को किसी व्यक्ति के लिए आसानी से पढ़े जा सकने वाले फ़ॉर्मैट में डंप करने के लिए, HID Explorer वेब ऐप्लिकेशन का भी इस्तेमाल किया जा सकता है.
Web Serial की मदद से, इस डिवाइस के लिए वेंडर के दस्तावेज़ और इस डिवाइस पर काम करने वाले निर्देशों के बिना, यह मुश्किल है. हालांकि, अनुमान लगाकर ऐसा किया जा सकता है. इस डिवाइस की रिवर्स-इंजीनियरिंग करने के लिए, Wireshark जैसे टूल की मदद से रॉ यूएसबी ट्रैफ़िक को कैप्चर किया जा सकता है. अगर यह डिवाइस, किसी व्यक्ति के लिए आसानी से पढ़ा जा सकने वाला प्रोटोकॉल इस्तेमाल करता है, तो इस डिवाइस के साथ एक्सपेरिमेंट करने के लिए, सीरियल टर्मिनल वेब ऐप्लिकेशन का भी इस्तेमाल किया जा सकता है.
WebUSB की मदद से, इस डिवाइस के लिए साफ़ तौर पर दस्तावेज़ और यह डिवाइस किन यूएसबी कमांड के साथ काम करता है, इसकी जानकारी के बिना यह मुश्किल है. हालांकि, सही अनुमान लगाकर ऐसा किया जा सकता है. सूज़ हिंटन का Exploring WebUSB and its exciting potential देखें. इस डिवाइस को रिवर्स-इंजीनियर भी किया जा सकता है. इसके लिए, रॉ यूएसबी ट्रैफ़िक को कैप्चर करें और यूएसबी डिस्क्रिप्टर की जांच करें. इसके लिए, Wireshark जैसे बाहरी टूल और ब्राउज़र में पहले से मौजूद टूल इस्तेमाल करें. जैसे, Chromium पर आधारित ब्राउज़र में मौजूद इंटरनल पेज
about://usb-internals.
Acknowledgements
इस लेख की समीक्षा करने के लिए, राइली ग्रांट, थॉमस स्टाइनर, और केसी बास्क को धन्यवाद.