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