Zum Hauptinhalt springen

Session

QRSession hält den Zustandsautomaten des Handschlags. Eine Instanz pro Node; sie verfolgt jedes erzeugte Offer und jede angenommene Verbindung.

import { QRSession } from '@le-space/libp2p-webrtc-qr'

const session = new QRSession(node, { rtcConfiguration })

Die beiden Seiten

// anbietende Seite
const offer = await session.createOffer()
const { peerId, connection, address, ageSeconds } = await session.acceptAnswer(reply)

// antwortende Seite
const answer = await session.acceptOffer(offer)
session.addEventListener('connect', e => e.detail.peerId)

acceptOffer kehrt zurück, sobald die Antwort signiert ist — nicht, wenn die Verbindung steht. Der anbietende Peer kann ohne diese Antwort nicht fertig werden. Die Verbindung kommt danach zustande und meldet sich über connect, oder über error, wenn sie es nie tut.

Optionen

OptionVorgabeBedeutung
rtcConfigurationwird an RTCPeerConnection gereicht
compactfalseerzeugt kurze v3-Codes
iceGatheringTimeout5000Ende des Wartens auf Kandidaten
connectionTimeout30000Aufgabe von connected
answerWaitTimeoutwie lange die antwortende Seite offen hält
dialAttempts, dialRetryDelay, dialSettleDelayForm der Wiederholung, während der Peer seinen Muxer anhängt

Pro Aufruf: createOffer({ compact }), acceptAnswer(text, { dial }).

dial: false übergeben, wenn du deinen eigenen Protokoll-Stream öffnest — sonst wird die Verbindung zweimal gewählt.

Methoden, Zustand, Ereignisse

createOffer, acceptOffer, acceptAnswerder Handschlag
dial, dialProtocoldanach
session.offersoffene Angebote, nach Session-ID
session.inboundVerbindungen aus angenommenen Angeboten
Ereignisseconnect, error

session.offers und session.inbound zusammen sind jede Peer-Verbindung, für die diese Session zuständig ist — genau das, worüber eine Lebendigkeitsanzeige iterieren muss.

Fehlersuche

import { describeIce } from '@le-space/libp2p-webrtc-qr'

describeIce(peerConnection) // eine Zeile: beide Kandidatensätze und der ICE-Zustand

Diese Zeichenkette gehört in jede Fehlermeldung. Mit „Verbindung fehlgeschlagen" allein kann niemand etwas anfangen.