Aggiornamenti RFCOMM Bluetooth in Web Serial

François Beaufort
François Beaufort

L'API Web Serial supporta la comunicazione con i servizi RFCOMM sui dispositivi Bluetooth Classic accoppiati da Chrome 117 su computer. Ad esempio, questo consente agli auricolari wireless di utilizzare RFCOMM per gestire le impostazioni audio e gli aggiornamenti del firmware. Per saperne di più, consulta Seriale tramite Bluetooth sul web.

A partire da Chrome 130 per computer, un miglioramento all'API Web Serial consente alle app web di rilevare quando è disponibile una porta seriale RFCOMM Bluetooth, senza doverla aprire. In questo modo si evitano ricollegamenti non necessari quando il dispositivo wireless è stato disconnesso intenzionalmente.

Quando un dispositivo wireless esce dal raggio d'azione dell'host, qualsiasi porta seriale wireless aperta da un'app web si chiude automaticamente. In questi casi, l'app web potrebbe tentare di riaprire la porta con il metodo SerialPort open(). Tuttavia, se il dispositivo wireless è stato scollegato intenzionalmente (ad esempio dall'utente dal pannello di controllo del sistema operativo), l'app web dovrebbe evitare di riaprire la porta per impedire il ricollegamento al dispositivo wireless.

Esponendo lo stato di connessione logico del dispositivo wireless che ospita la porta seriale wireless tramite un nuovo attributo booleano SerialPort connected, le app web ora possono distinguere questi casi e ricollegarsi solo se la disconnessione non è stata intenzionale.

L'attributo SerialPort connected è true per le porte seriali wireless se il dispositivo wireless che ospita la porta ha connessioni attive al sistema. Per le porte seriali con cavo, è true se la porta è fisicamente collegata al sistema.

Il seguente snippet mostra come controllare quali dispositivi sono disponibili e potenzialmente connettersi automaticamente.

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.
  }
}

In precedenza, solo le porte seriali cablate inviavano gli eventi connect e disconnect. Le porte seriali RFCOMM Bluetooth ora inviano questi eventi quando la porta diventa logicamente connessa o disconnessa.

Demo

Demo di SerialPort collegata.

Risorse

Riconoscimenti

Grazie a Jack Hsieh e Reilly Grant per le loro recensioni.