Исправление синхронизации голосовых каналов
🎯 Проблема
При входе в голосовой канал другие пользователи на сервере не видели уведомления о том, что кто-то присоединился.✅ Что было исправлено
Backend изменения:
-
backend/app/websocket/voice.py
- ✅ Раскомментирован код отправки глобального уведомления при входе в канал
- ✅ Раскомментирован код отправки глобального уведомления при выходе из канала
- Теперь отправляется
voice_channel_joinиvoice_channel_leaveвсем онлайн пользователям
-
backend/app/websocket/unified.py
- ✅ Добавлена отправка глобального уведомления при входе в канал
- ✅ Добавлена отправка глобального уведомления при выходе из канала
- Синхронизировано с логикой из
voice.py
-
backend/app/websocket/connection_manager.py
- ✅ Улучшен метод
broadcast()для работы с Redis - ✅ Добавлена поддержка специального канала
broadcastв Redis - ✅ Обновлен
redis_listener()для обработки broadcast сообщений
- ✅ Улучшен метод
Frontend изменения:
- frontend/src/store/slices/optimizedVoiceSlice.ts
- ✅ Исправлена TypeScript ошибка с типами
VoiceUserиVoiceParticipant - ✅ Добавлена нормализация полей
is_mutedиis_deafened(преобразованиеundefinedвfalse)
- ✅ Исправлена TypeScript ошибка с типами
🚀 Как протестировать
1. Перезапустить бэкенд
С Docker:2. Проверить функциональность
- Откройте два браузера (или две вкладки в режиме инкогнито)
- Войдите под разными аккаунтами
- На первом аккаунте зайдите в голосовой канал
- На втором аккаунте должно появиться:
- Уведомление о присоединении пользователя
- Аватарка участника в списке голосового канала
- Звук присоединения (если включены звуки)
3. Проверить логи
Backend логи должны показать:📊 Схема работы
🔍 Отладка
Если синхронизация не работает:-
Проверьте WebSocket соединение:
-
Проверьте Redis:
-
Проверьте обработчики событий:
📝 Технические детали
Типы WebSocket сообщений
При входе в канал:Redis каналы
user:{user_id}- личные сообщения пользователюchannel:{channel_id}- сообщения участникам конкретного каналаbroadcast- НОВЫЙ - глобальные сообщения всем онлайн пользователям
✨ Что дальше?
После успешного тестирования можно:- Добавить push-уведомления о входе друзей в голосовые каналы
- Показывать “богатое присутствие” (Rich Presence) в профилях
- Добавить статистику активности в голосовых каналах
Дата исправления: 2025-10-12 Затронутые файлы: 4 backend, 1 frontend Статус: ✅ Готово к тестированию