fix(voice): отдавать клиенту базовый адрес LiveKit без сегмента /rtc
LiveKit SDK сам дописывает сигнальный путь (`/rtc`, `/rtc/v1`) к базовому
адресу, поэтому `wss://host/rtc` из конфига превращался в `wss://host/rtc/rtc`
и комната навсегда оставалась в состоянии «Подключение…» (AGENT.md 7.14).
- `voice.ResolveLiveKitURL` снимает завершающий сегмент `/rtc`, сохраняя
префикс прокси (`wss://host/livekit/rtc` → `wss://host/livekit`);
- `POST /channels/{id}/voice/join` отдаёт адрес через `VoiceURLForClient` и
отвечает `voice.disabled`, если адрес не разрешился;
- тесты: таблица адресов, ожидание `wss://gl.test` в голосовом сценарии.
This commit is contained in:
@@ -977,7 +977,9 @@ func TestVoiceStateFlow(t *testing.T) {
|
||||
Camera bool `json:"camera"`
|
||||
} `json:"state"`
|
||||
}](t, join)
|
||||
if payload.Token == "" || payload.URL != "wss://gl.test/rtc" {
|
||||
// Адрес отдаётся в виде, который ждёт LiveKit SDK: без сегмента `/rtc`,
|
||||
// иначе SDK допишет его второй раз (AGENT.md 7.14).
|
||||
if payload.Token == "" || payload.URL != "wss://gl.test" {
|
||||
t.Fatalf("токен/адрес = %q / %q", payload.Token, payload.URL)
|
||||
}
|
||||
if payload.State.UserID != f.memberID || payload.State.ChannelID != voiceChannel.Channel.ID {
|
||||
|
||||
Reference in New Issue
Block a user