Client Überblick (resonix.js
)
resonix.js
ist ein minimalistischer, meinungsstarker Node.js / TypeScript Client, um mit einem laufenden Resonix Audio Node zu interagieren und rohe PCM‑Frames via @discordjs/voice
in Discord‑Voice Kanäle einzuspeisen.
Ziele:
- Sehr kleine API‑Fläche: join, Player erzeugen, play/pause/resume, Lautstärke
- Server übernimmt Decoding, Queue & Filterung
- Streaming roher 48kHz Stereo PCM Frames über den eingebauten WebSocket
- Framework‑agnostisch (funktioniert mit discord.js, aber nicht daran gebunden)
Nicht im Scope (DIY oder später): integrierte Track‑Queue Abstraktion, Such‑Helper, komplexe Reconnect Logik.
Kernklassen
Klasse | Zweck |
---|---|
ResonixNode | Repräsentiert Zielserver (Basis‑URL + Version); hält gemeinsamen REST Client. |
ResonixManager | Verwalten genau eines ResonixPlayer pro Discord Guild, Beitritt zu Voice. |
ResonixPlayer | Brücke REST + WebSocket Audiostream -> Discord AudioPlayer . |
Ablauf (High Level)
ResonixNode
mit Server‑URL instanziieren (z. B.http://localhost:2333
, Versionv0
).ResonixManager
erzeugen und deinemdiscord.js
Client
+ Node übergeben.- Wenn ein Nutzer einen Play‑Befehl ausführt:
- Voice Channel beitreten via
manager.join()
- Player holen/erstellen:
manager.create(guildId, connection)
- Wiedergabe starten:
player.play(uri)
(direkte oder resolvierbare URI)
- Voice Channel beitreten via
- Steuern mit
pause()
,resume()
,setVolume()
. - Aufräumen mit
manager.leave(guildId)
oderplayer.destroy()
.
Feature Zuordnung
Server Fähigkeit | Client Verantwortung |
---|---|
Decoding / Filter | Komplett serverseitig |
Queue & Loop | Server verwaltet Queue; Client kann (zukünftig) via REST hinzufügen |
PCM Stream | Client konsumiert Frames automatisch über WebSocket |
Events | (Geplant) – Events exponieren sobald Server API stabil ist |