1.4 KiB
1.4 KiB
ConnectionPanel Component
Zweck
- Stellt Verbindungsstatus dar (WebSocket, Mikrofon) und nimmt Remote-Peer-ID entgegen.
- Hält Signals für Peer-Verbindung als Responder und verwaltet Offer/Answer-Eingang.
- Wird in der Sidebar des
VoiceChannelLayoutals Karten-Stack (connection-card) dargestellt.
Wichtige Signals
peer_id,remote_id,connected,websocketpeer_connection: ResponderRtcPeerConnectioninitiator_connection: Referenz auf Initiator-PC (für Answer/Renegotiation)local_media: geteilterMediaStream
Ablauf
- Peer-ID generieren (
use_effectmit Timestamp + Random). - WebSocket verbinden (
ws://localhost:3478/ws): setztonopen/onclose/onmessageHandler und löst bei Verbindungsabbruch automatisch exponentielles Backoff-Reconnect aus. - Offer-Coroutine (
use_coroutine): empfängtSignalingMessagevom Typoffer, baut PeerConnection (Responder) und sendet Answer. - ICE-Kandidaten:
onicecandidatesendet Kandidaten zurück; empfangene Kandidaten werden an vorhandene PCs angehängt. - Audio-Wiedergabe:
ontrackerstellt<audio>Element und setztsrcObject.
Geplante Verbesserungen
- Room-basierte IDs statt manueller Eingabe.
- UI-Feedback bei kopierter Peer-ID (Clipboard API).
- Mehr Statusanzeigen (ICE connected, TURN usage).
- Countdown/Versuchsindikator für laufende Reconnects im UI anzeigen.