Start · Sprachen · JavaScript · Referenz · BluetoothRemoteGATTServer.connected

BluetoothRemoteGATTServer.connected

Eigenschaft

Schreibgeschützter boolescher Wert, der <code>true</code> ist, solange das aktuelle Skript mit dem GATT-Server von <code>this.device</code> verbunden ist.

seit JavaScript Experimentell: Chrome/Edge 56+, Opera; nicht in Fi Kategorie: webapi

Signatur

BluetoothRemoteGATTServer.connected

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

Typ
boolean
Beschreibung
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);
});
Vorher verbunden: false Nachher verbunden: true

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);
Baue Verbindung auf …

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();
Verbindung verloren, connected = false

// 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 navigator prü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/catch absichern.
  • Für Reaktionen auf Verbindungsabbrüche das Ereignis gattserverdisconnected verwenden statt connected per Polling abzufragen.
  • Nach einem Abbruch werden zuvor erhaltene Dienst- und Charakteristik-Objekte ungültig; nach einem erneuten connect() müssen sie neu abgerufen werden.
  • connected ist schreibgeschützt – eine Zuweisung wird ignoriert (im Strict Mode TypeError).