feat(call): integrate LiveKit for voice and video calling
All checks were successful
Build Backend / build (push) Successful in 3m47s
Build Backend / build-docker (push) Successful in 5m9s

Replace the manual WebRTC signaling implementation with LiveKit SFU. This includes:
- Adding LiveKit service, handler, and configuration.
- Updating Docker Compose to include LiveKit server, Redis, and PostgreSQL.
- Refactoring `CallService` and `WSHandler` to support LiveKit room readiness instead of raw SDP/ICE relaying.
- Adding new API endpoints for LiveKit token generation and webhooks.
- Removing deprecated WebRTC configuration and manual signaling DTOs.
This commit is contained in:
2026-06-01 13:41:02 +08:00
parent 9356cb6876
commit 14114db68d
22 changed files with 731 additions and 452 deletions

32
configs/livekit.yaml Normal file
View File

@@ -0,0 +1,32 @@
# LiveKit Server Configuration
# See https://docs.livekit.io/realtime/server/config/ for all options
port: 7880
rtc:
tcp_port: 7881
udp_port: 7882
use_external_ip: false
# Enable TURN/TLS relay for restrictive networks
port_range_start: 7881
port_range_end: 7882
node_ip: 127.0.0.1
keys:
devkey: u1sLYiHWe4HIr3KrJrvknIleoHdgHdDqSjfkBvRs2AlA
logging:
level: info
# Redis for distributed state (required)
redis:
address: livekit-redis:6379
# PostgreSQL for persistent storage (rooms, participants, egress)
db:
address: postgres://postgres:postgres@livekit-postgres:5432/livekit?sslmode=disable
# Webhook for call history persistence
# webhook:
# urls:
# - http://app:8080/api/v1/calls/webhook
# api_key: devkey