Web Serial में ब्लूटूथ RFCOMM से जुड़े अपडेट

François Beaufort
François Beaufort

Web Serial API, डेस्कटॉप पर Chrome 117 से जोड़े गए ब्लूटूथ क्लासिक डिवाइसों पर, RFCOMM सेवाओं के साथ कम्यूनिकेट करने की सुविधा देता है. उदाहरण के लिए, इससे वायरलेस ईयरबड, ऑडियो सेटिंग और फ़र्मवेयर अपडेट को मैनेज करने के लिए, RFCOMM का इस्तेमाल कर सकते हैं. ज़्यादा जानने के लिए, वेब पर ब्लूटूथ की मदद से सीरियल कनेक्शन देखें.

डेस्कटॉप के लिए Chrome 130 में, Web Serial API में किए गए सुधार की मदद से वेब ऐप्लिकेशन यह पता लगा सकते हैं कि ब्लूटूथ RFCOMM सीरियल पोर्ट कब उपलब्ध है. इसके लिए, उन्हें पोर्ट खोलने की ज़रूरत नहीं है. इससे, वायरलेस डिवाइस को जान-बूझकर डिसकनेक्ट करने पर, उसे फिर से कनेक्ट होने से रोका जा सकता है.

जब कोई वायरलेस डिवाइस, होस्ट की रेंज से बाहर हो जाता है, तो वेब ऐप्लिकेशन से खोला गया कोई भी वायरलेस सीरियल पोर्ट अपने-आप बंद हो जाता है. ऐसे मामलों में, वेब ऐप्लिकेशन SerialPort open() तरीके से पोर्ट को फिर से खोलने की कोशिश कर सकता है. हालांकि, अगर वायरलेस डिवाइस को जान-बूझकर डिसकनेक्ट किया गया था (उदाहरण के लिए, उपयोगकर्ता ने ऑपरेटिंग सिस्टम के कंट्रोल पैनल से डिसकनेक्ट किया था), तो वेब ऐप्लिकेशन को पोर्ट को फिर से खोलने से बचना चाहिए, ताकि वायरलेस डिवाइस से फिर से कनेक्ट न किया जा सके.

नए बूलियन SerialPort connected एट्रिब्यूट की मदद से, वेब ऐप्लिकेशन अब वायरलेस सीरियल पोर्ट को होस्ट करने वाले वायरलेस डिवाइस के लॉजिकल कनेक्शन स्टेटस को दिखा सकते हैं. इससे, वेब ऐप्लिकेशन अब इन मामलों में अंतर कर सकते हैं और सिर्फ़ तब कनेक्ट कर सकते हैं, जब डिसकनेक्ट अनजाने में हुआ हो.

वायरलेस सीरियल पोर्ट के लिए SerialPort connected एट्रिब्यूट की वैल्यू 'सही' होती है. हालांकि, ऐसा तब ही होता है, जब पोर्ट को होस्ट करने वाले वायरलेस डिवाइस का सिस्टम से कोई चालू कनेक्शन हो. वायर वाले सीरियल पोर्ट के लिए, यह सही है कि पोर्ट सिस्टम से कनेक्ट है.

नीचे दिए गए स्निपेट में, यह पता करने का तरीका बताया गया है कि कौनसे डिवाइस उपलब्ध हैं और उनसे अपने-आप कनेक्ट कैसे किया जा सकता है.

const ports = await navigator.serial.getPorts();
for (const port of ports) {
  if (port.connected) {
    // Automatically try to connect to the Bluetooth device.
    await port.open({ baudRate: 9600 });
  } else {
    // Otherwise, when the port is not logically connected:
    // 1. Prompt the user to make sure the Bluetooth device is available.
    // 2. Show a "connect" button to try opening the port.
  }
}

पहले, सिर्फ़ वायर वाले सीरियल पोर्ट कनेक्ट और डिसकनेक्ट इवेंट भेजते थे. ब्लूटूथ RFCOMM सीरियल पोर्ट, अब इन इवेंट को डिस्पैच करते हैं, जब पोर्ट लॉजिकली कनेक्ट या डिसकनेक्ट हो जाता है.

डेमो

SerialPort से कनेक्ट किए गए डिवाइस का डेमो.

संसाधन

लोगों का आभार

समीक्षा करने के लिए, जैक शे और रेली ग्रांट को धन्यवाद.