Die Web Serial API unterstützt ab Chrome 117 auf dem Desktop die Kommunikation mit RFCOMM-Diensten auf gekoppelten Bluetooth Classic-Geräten. So können beispielsweise kabellose Kopfhörer RFCOMM verwenden, um Audioeinstellungen und Firmware-Updates zu verwalten. Weitere Informationen finden Sie unter Serial over Bluetooth on the web.
Ab Chrome 130 für den Desktop können Webanwendungen mit einer Verbesserung der Web Serial API erkennen, wann ein serieller Bluetooth RFCOMM-Port verfügbar ist, ohne den Port öffnen zu müssen. So werden unnötige Neuverbindungen verhindert, wenn das kabellose Gerät absichtlich getrennt wurde.
Wenn ein kabelloses Gerät außerhalb der Reichweite des Hosts liegt, werden alle von einer Webanwendung geöffneten seriellen Ports automatisch geschlossen. In solchen Fällen kann die Webanwendung versuchen, den Port mit der Methode SerialPort open() wieder zu öffnen. Wenn das kabellose Gerät jedoch absichtlich getrennt wurde (z. B. vom Nutzer über die Systemsteuerung des Betriebssystems), sollte die Webanwendung den Port nicht wieder öffnen, um eine erneute Verbindung mit dem kabellosen Gerät zu verhindern.
Durch die Bereitstellung des logischen Verbindungsstatus des kabellosen Geräts, auf dem sich der serielle Port befindet, über ein neues boolesches Attribut connected von SerialPort können Webanwendungen diese Fälle jetzt unterscheiden und nur dann eine erneute Verbindung herstellen, wenn die Verbindung unbeabsichtigt getrennt wurde.
Das Attribut SerialPort connected ist für serielle Ports mit kabelloser Verbindung „true“, wenn das kabellose Gerät, auf dem sich der Port befindet, aktive Verbindungen zum System hat. Bei seriellen Ports mit Kabelverbindung ist es „true“, wenn der Port physisch mit dem System verbunden ist.
Im folgenden Snippet wird gezeigt, wie Sie prüfen können, welche Geräte verfügbar sind, und gegebenenfalls automatisch eine Verbindung zu ihnen herstellen.
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.
}
}
Bisher wurden nur für serielle Ports mit Kabelverbindung Ereignisse für das Herstellen von Verbindungen und das Trennen von Verbindungen gesendet. Serielle Bluetooth RFCOMM-Ports senden diese Ereignisse jetzt, wenn der Port logisch verbunden oder getrennt wird.
Demo
Ressourcen
Danksagung
Vielen Dank an Jack Hsieh und Reilly Grant für ihre Rezensionen.