웹 시리얼의 블루투스 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 속성은 true입니다. 유선 직렬 포트의 경우 포트가 시스템에 물리적으로 연결되어 있으면 true입니다.

다음 스니펫은 사용 가능한 기기를 확인하고 자동으로 연결하는 방법을 보여줍니다.

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 연결됨 데모.

리소스

감사의 말

리뷰를 제공해 주신 Jack Hsieh 및 Reilly Grant께 감사드립니다.