Corp/docs/guides/WEBSOCKET_BACKEND_SETUP.md
igor_nadein 8a083f6f67 fix: Исправлена система автоотметки прочитанных сообщений
- Удалено поле last_read_at из ChatReadState, используется только last_read_message FK
- Исправлена логика автоотметки: отмечается последнее ЗАГРУЖЕННОЕ сообщение, а не последнее в чате
- Убран вызов chat.mark_read() при WebSocket open_chat (отмечал последнее в чате вместо загруженного)
- Добавлен signal для мониторинга изменений ChatReadState
- Исправлена логика скролла: убран автоскролл при дозагрузке вниз
- Добавлена проверка разрывов при WebSocket сообщениях (предотвращает пропуск сообщений)
- Реализована автоотметка WebSocket сообщений (только если пользователь внизу)
- Асимметричная загрузка: 24 контекста + 6 новых сообщений
- Добавлен ScrollableMessageList компонент для корректной работы скролла
- Миграции: 0028 (удаление last_read_at), 0029 (индекс на last_read_message)
2026-02-25 20:29:00 +03:00

2.4 KiB
Raw Blame History

Запуск backend с поддержкой WebSocket

Проблема

python manage.py runserver НЕ поддерживает WebSocket. Для real-time функций нужен ASGI сервер.

Решение

Используйте Daphne (уже установлен в requirements.txt):

Windows (PowerShell/CMD):

cd C:/Users/igor_/Dev/EUSRR/backend
c:/Users/igor_/Dev/EUSRR/.venv/Scripts/python -m daphne -b 0.0.0.0 -p 9000 eusrr_backend.asgi:application

Или через активированный venv:

cd C:/Users/igor_/Dev/EUSRR/backend
..\\.venv\\Scripts\\activate
daphne -b 0.0.0.0 -p 9000 eusrr_backend.asgi:application

Проверка

После запуска должно появиться:

2026-02-25 12:00:00 [INFO] Starting server at tcp:port=9000:interface=0.0.0.0
2026-02-25 12:00:00 [INFO] HTTP/2 support enabled
2026-02-25 12:00:00 [INFO] Configuring endpoint tcp:port=9000:interface=0.0.0.0
2026-02-25 12:00:00 [INFO] Listening on TCP address 0.0.0.0:9000

Альтернатива: Uvicorn

Если Daphne не работает:

pip install uvicorn[standard]
uvicorn eusrr_backend.asgi:application --host 0.0.0.0 --port 9000 --reload

Production

Для production используйте:

daphne -b 0.0.0.0 -p 9000 eusrr_backend.asgi:application --access-log - --proxy-headers

Автозапуск (опционально)

Создайте скрипт start_backend.bat:

@echo off
cd C:\\Users\\igor_\\Dev\\EUSRR\\backend
c:\\Users\\igor_\\Dev\\EUSRR\\.venv\\Scripts\\python -m daphne -b 0.0.0.0 -p 9000 eusrr_backend.asgi:application
pause

Затем просто запускайте start_backend.bat.

Проверка WebSocket

Откройте консоль браузера (F12) и проверьте:

✅ Успешное подключение:

✅ WebSocket connected to chat 2

❌ Ошибка подключения:

❌ WebSocket error: {}
⚠️  WebSocket не может подключиться. Убедитесь что backend запущен через Daphne

Важно!

  • ❌ python manage.py runserver - НЕ работает с WebSocket
  • ✅ daphne eusrr_backend.asgi:application - РАБОТАЕТ с WebSocket
  • ✅ uvicorn eusrr_backend.asgi:application - РАБОТАЕТ с WebSocket