Start · Sprachen · JavaScript · Referenz · PresentationConnection.id

PresentationConnection.id

Eigenschaft

Die schreibgeschützte Eigenschaft <code>id</code> liefert die eindeutige Präsentationskennung einer <code>PresentationConnection</code> als Zeichenkette.

seit JavaScript Experimentell: Chromium-basierte Browser (Chrome/E Kategorie: webapi

Signatur

PresentationConnection.id

Beschreibung

Die Eigenschaft PresentationConnection.id gehört zur Presentation API. Sie gibt einen DOMString zurück, der die Präsentation eindeutig kennzeichnet, zu der die Verbindung gehört. Der Browser (User Agent) vergibt diese Kennung beim Start einer Präsentation über PresentationRequest.start(). Die Eigenschaft ist schreibgeschützt.

Wichtig ist die Kennung vor allem für das Wiederverbinden. Wenn die steuernde Seite neu geladen wird oder die Verbindung abbricht, kann man mit PresentationRequest.reconnect(id) wieder mit einer laufenden Präsentation verbinden. Dafür speichert man die id zusammen mit der url zum Beispiel in localStorage oder sessionStorage.

Auf der Seite, die präsentiert wird (dem Empfänger), haben alle Verbindungen in navigator.presentation.receiver.connectionList dieselbe Präsentations-id, wenn sie zur selben Präsentation gehören. Damit lassen sich Verbindungen zuordnen und in Protokollen unterscheiden.

Rückgabewert

Typ
string
Beschreibung
Die eindeutige Präsentationskennung als DOMString. Sie wird vom Browser erzeugt und kann nicht geändert werden.

Beispiele

Präsentation starten und ID auslesen

const request = new PresentationRequest(['https://example.com/praesentation.html']);

const starteButton = document.querySelector('#starten');
starteButton.addEventListener('click', async () => {
  try {
    // start() muss durch eine Benutzeraktion ausgelöst werden
    const connection = await request.start();
    console.log('Präsentations-ID:', connection.id);
    console.log('Zustand:', connection.state);
  } catch (err) {
    console.error('Start fehlgeschlagen:', err.name, err.message);
  }
});
Präsentations-ID: 3f8c2a1e-9b4d-4c6e-a7f0-12ab34cd56ef Zustand: connecting

ID speichern und nach dem Neuladen wieder verbinden

const url = 'https://example.com/praesentation.html';
const request = new PresentationRequest([url]);

const merkeVerbindung = (connection) => {
  localStorage.setItem('presentationId', connection.id);
  connection.addEventListener('terminate', () => {
    localStorage.removeItem('presentationId');
  });
};

// Nach dem Laden der Seite prüfen, ob eine Präsentation noch läuft
const gespeicherteId = localStorage.getItem('presentationId');
if (gespeicherteId) {
  request.reconnect(gespeicherteId)
    .then((connection) => {
      console.log('Wieder verbunden mit', connection.id);
      merkeVerbindung(connection);
    })
    .catch(() => localStorage.removeItem('presentationId'));
}

document.querySelector('#starten').addEventListener('click', async () => {
  const connection = await request.start();
  merkeVerbindung(connection);
});
Wieder verbunden mit 3f8c2a1e-9b4d-4c6e-a7f0-12ab34cd56ef

Empfängerseite: Verbindungen nach ID protokollieren

// Läuft in der präsentierten Seite (Empfänger)
if (navigator.presentation?.receiver) {
  const list = await navigator.presentation.receiver.connectionList;

  const protokolliere = (connection) => {
    console.log(`Verbindung ${connection.id}: ${connection.state}`);
    connection.addEventListener('message', (event) => {
      console.log(`[${connection.id}] Nachricht:`, event.data);
    });
  };

  list.connections.forEach(protokolliere);
  list.addEventListener('connectionavailable', (event) => {
    protokolliere(event.connection);
  });
}
Verbindung 3f8c2a1e-9b4d-4c6e-a7f0-12ab34cd56ef: connected

// Wichtig · Fallstricke

  • Kompatibilität: Die Presentation API ist experimentell. Sie wird im Wesentlichen nur von Chromium-basierten Browsern unterstützt (teilweise nur auf Desktop oder Android). Firefox und Safari unterstützen sie nicht. Prüfe vorher, ob sie verfügbar ist, zum Beispiel mit 'PresentationRequest' in window.
  • Sicherer Kontext: Die API steht nur über HTTPS zur Verfügung.
  • Das Format der id legt der Browser fest (häufig eine UUID). Werte sie nicht inhaltlich aus, sondern nutze sie nur als undurchsichtige Kennung.
  • Nach dem Ereignis terminate ist die ID wertlos. reconnect() schlägt dann mit NotFoundError fehl. Gespeicherte IDs solltest du deshalb aufräumen.
  • Ein reconnect() funktioniert nur mit derselben Präsentations-URL, mit der die Präsentation gestartet wurde. Speichere deshalb die ID und die URL zusammen.