# 🚀 WebSocket SOS - Быстрый Старт ## ⚡ Самый быстрый способ протестировать ### 1️⃣ Запустить сервисы (если еще не запущены) ```bash cd /home/trevor/dev/chat # Терминал 1 python -m services.user_service.main # Терминал 2 python -m services.emergency_service.main ``` ### 2️⃣ Запустить тест (занимает ~20 секунд) ```bash python test_ws_quick.py ``` ### ✅ Результат ``` ✅ Token obtained ✅ WebSocket connected ✅ Ping/pong working ✅ WebSocket connection test completed successfully! ``` --- ## 📝 Тестовые учетные данные | Параметр | Значение | |----------|----------| | Email | wstester@test.com | | Password | WsTest1234! | | User ID | 51 | --- ## 🔗 WebSocket URL ``` ws://localhost:8002/api/v1/emergency/ws/51?token={JWT_TOKEN} ``` ### Как получить JWT_TOKEN ```bash curl -X POST http://localhost:8001/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"wstester@test.com","password":"WsTest1234!"}' ``` Скопируйте значение `access_token` из ответа. --- ## 💬 Примеры сообщений ### Подключение (отправляется сервером) ```json { "type": "connection_established", "message": "WebSocket connection established successfully", "user_id": 51, "timestamp": "2025-12-13T14:15:14.982894" } ``` ### Ping (отправьте клиент) ```json {"type": "ping"} ``` ### Pong (ответ сервера) ```json {"type": "pong"} ``` ### SOS Alert (отправляется сервером при создании оповещения) ```json { "type": "emergency_alert", "alert_id": 123, "alert_type": "SOS", "latitude": 55.7558, "longitude": 37.6173, "address": "Location (55.7558, 37.6173)", "message": "Экстренная ситуация!", "created_at": "2025-12-13T14:15:20.123456", "distance_km": 0.5 } ``` --- ## 🔧 Тестовые скрипты ### test_ws_quick.py - Базовый тест ```bash python test_ws_quick.py ``` **Что проверяет:** - ✅ Получение JWT токена - ✅ Подключение WebSocket - ✅ Ping/Pong - ✅ Слушание сообщений (30 сек) **Время:** ~30 секунд --- ### register_test_user.py - Создание пользователя ```bash python register_test_user.py ``` **Что делает:** - ✅ Регистрирует нового тестового пользователя - ✅ Получает JWT токен - ✅ Выводит готовый WebSocket URL --- ### test_ws_full.py - Полное тестирование ```bash python test_ws_full.py ``` **Что проверяет:** - ✅ Аутентификация - ✅ WebSocket подключение - ✅ Создание SOS оповещения - ✅ Получение уведомления - ✅ Множественные клиенты **Время:** ~1-2 минуты --- ## 🎯 Статус работоспособности | Функция | Статус | |---------|--------| | WebSocket подключение | ✅ OK | | Аутентификация | ✅ OK | | Ping/Pong | ✅ OK | | Создание SOS | ✅ OK | | Получение уведомлений | ✅ OK | | Broadcast | ✅ OK | --- ## 📊 Посмотреть статистику ### Все активные соединения ```bash curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \ http://localhost:8002/api/v1/websocket/stats ``` ### Детальная информация ```bash curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \ http://localhost:8002/api/v1/websocket/connections ``` ### Пинг всех подключений ```bash curl -X POST -H "Authorization: Bearer YOUR_JWT_TOKEN" \ http://localhost:8002/api/v1/websocket/ping ``` --- ## 🐛 Решение проблем ### Проблема: WebSocket не подключается ``` Решение: 1. Проверьте JWT токен (не истек ли) 2. Убедитесь в правильности user_id 3. Проверьте что Emergency Service запущена на 8002 ``` ### Проблема: Плохое соединение ``` Решение: 1. Проверьте интернет (локальное тестирование) 2. Посмотрите логи сервиса 3. Попробуйте переподключиться ``` ### Проблема: Нет уведомлений о SOS ``` Решение: 1. Убедитесь что Location Service запущена 2. Проверьте что пользователи находятся в радиусе 1-2 км 3. Убедитесь что пользователи подключены к WebSocket ``` --- ## 📚 Дополнительная информация ### Подробные отчеты: - [WS_SOS_FINAL_REPORT.md](./docs/WS_SOS_FINAL_REPORT.md) - Полный технический отчет - [WS_SOS_TEST_REPORT.md](./docs/WS_SOS_TEST_REPORT.md) - Результаты тестирования ### Исходный код: - `/home/trevor/dev/chat/services/emergency_service/main.py` - WebSocket сервис - Класс `WebSocketManager` (строка ~96) - Endpoint `websocket_endpoint()` (строка ~393) --- **Последнее обновление:** 13 декабря 2025 **Статус:** ✅ Все работает!