Signatur
Beschreibung
Die schreibgeschützte Eigenschaft connected der Schnittstelle BluetoothRemoteGATTServer zeigt an, ob die aktuelle Skriptumgebung (Fenster oder Worker) gerade eine aktive GATT-Verbindung zum zugehörigen Bluetooth-Low-Energy-Gerät (this.device) hat.
Nach einem erfolgreichen Aufruf von connect() wird der Wert true. Er springt auf false zurück, sobald disconnect() aufgerufen wird, das Gerät außer Reichweite gerät, ausgeschaltet wird oder die Verbindung auf andere Weise abbricht. In diesem Fall löst das BluetoothDevice zusätzlich das Ereignis gattserverdisconnected aus.
Typischerweise prüft man die Eigenschaft, bevor man Dienste, Charakteristiken oder Deskriptoren liest oder schreibt, oder bevor man die Verbindung neu aufbaut. So lassen sich unnötige connect()-Aufrufe und NetworkError-Ausnahmen bei GATT-Operationen vermeiden.
Rückgabewert
true, wenn eine aktive GATT-Verbindung zum Gerät besteht, andernfalls false.Beispiele
Verbindungsstatus nach connect() prüfen
const button = document.querySelector('#verbinden');
button.addEventListener('click', async () => {
// requestDevice() erfordert eine Benutzergeste
const device = await navigator.bluetooth.requestDevice({
filters: [{ services: ['heart_rate'] }]
});
console.log('Vorher verbunden:', device.gatt.connected);
const server = await device.gatt.connect();
console.log('Nachher verbunden:', server.connected);
});
Nur bei Bedarf neu verbinden
const ensureConnected = async (device) => {
if (!device.gatt.connected) {
console.log('Baue Verbindung auf …');
await device.gatt.connect();
}
return device.gatt;
};
const readBatteryLevel = async (device) => {
const server = await ensureConnected(device);
const service = await server.getPrimaryService('battery_service');
const characteristic = await service.getCharacteristic('battery_level');
const value = await characteristic.readValue();
return value.getUint8(0);
};
// Nutzung: const level = await readBatteryLevel(device);
Verbindungsabbruch erkennen und Status anzeigen
const watchConnection = (device) => {
const statusEl = document.querySelector('#status');
const updateStatus = () => {
statusEl.textContent = device.gatt.connected ? 'Verbunden' : 'Getrennt';
};
device.addEventListener('gattserverdisconnected', () => {
console.log('Verbindung verloren, connected =', device.gatt.connected);
updateStatus();
});
updateStatus();
};
// Später bewusst trennen:
// device.gatt.disconnect();
// Wichtig · Fallstricke
- Kompatibilität: Web Bluetooth ist experimentell und nur in Chromium-basierten Browsern (Chrome, Edge, Opera) verfügbar; Firefox und Safari unterstützen die API nicht. Unter Linux ist die Unterstützung teils nur per Flag aktiv. Vorher mit
'bluetooth' in navigatorprüfen. - Nur in sicheren Kontexten (HTTPS oder
localhost) verfügbar;requestDevice()erfordert eine Benutzergeste. Kann per Permissions-Policy (bluetooth) blockiert sein. - Der Wert ist eine Momentaufnahme: Zwischen der Prüfung und der nächsten GATT-Operation kann die Verbindung abbrechen. GATT-Aufrufe daher trotzdem mit
try/catchabsichern. - Für Reaktionen auf Verbindungsabbrüche das Ereignis
gattserverdisconnectedverwenden stattconnectedper Polling abzufragen. - Nach einem Abbruch werden zuvor erhaltene Dienst- und Charakteristik-Objekte ungültig; nach einem erneuten
connect()müssen sie neu abgerufen werden. connectedist schreibgeschützt – eine Zuweisung wird ignoriert (im Strict ModeTypeError).