Phase 2 backend: LiveKit voice integration
Backend:
- internal/voice/client.go: LiveKit token generation, room management, participant listing
- internal/voice/handlers.go: POST /voice/token, GET /voice/rooms/{roomID}/participants
- internal/gateway/events.go: added VOICE_JOIN, VOICE_LEAVE, VOICE_MUTE, VOICE_DEAFEN events
- cmd/server/main.go: wired voice client and routes under /api/v1/voice
- Docker: livekit.yaml config verified
Frontend deps:
- Added livekit-client and @livekit/components-react packages
This commit is contained in:
+15
-1
@@ -17,6 +17,7 @@ import (
|
||||
"git.dustin.coffee/hobokenchicken/dumpsterChat/internal/middleware"
|
||||
"git.dustin.coffee/hobokenchicken/dumpsterChat/internal/server"
|
||||
"git.dustin.coffee/hobokenchicken/dumpsterChat/internal/upload"
|
||||
"git.dustin.coffee/hobokenchicken/dumpsterChat/internal/voice"
|
||||
"github.com/go-chi/chi/v5"
|
||||
chimw "github.com/go-chi/chi/v5/middleware"
|
||||
)
|
||||
@@ -54,6 +55,12 @@ func main() {
|
||||
logger.Warn("upload handler not available", "error", err)
|
||||
}
|
||||
|
||||
// Voice client (LiveKit)
|
||||
voiceClient := voice.NewClient(cfg.LiveKit.APIKey, cfg.LiveKit.Secret, cfg.LiveKit.URL)
|
||||
if voiceClient == nil {
|
||||
logger.Warn("voice client not configured (missing LIVEKIT_API_KEY/SECRET)")
|
||||
}
|
||||
|
||||
// Auth handler
|
||||
authHandler := auth.NewHandler(database.DB, cfg)
|
||||
|
||||
@@ -134,7 +141,14 @@ func main() {
|
||||
if uploadHandler != nil {
|
||||
r.Post("/upload", uploadHandler.Upload)
|
||||
}
|
||||
})
|
||||
|
||||
// Voice
|
||||
if voiceClient != nil {
|
||||
r.Route("/voice", func(r chi.Router) {
|
||||
voice.NewHandler(database.DB, voiceClient, hub).RegisterRoutes(r)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
// File serving (public, for viewing uploaded files)
|
||||
|
||||
Reference in New Issue
Block a user