- Создано новое Django приложение realtime
- UserConsumer перенесен из communications в realtime
- Объединена функциональность чатов и уведомлений в одном consumer
- Обновлен asgi.py для использования realtime.routing
- Добавлена подписка на канал уведомлений (notifications_{user_id})
- Ping interval изменен на 20 секунд для лучшего keepalive
- Создан README.md с документацией по архитектуре
Улучшения архитектуры:
- Separation of Concerns: WebSocket логика отделена от бизнес-логики
- Single Responsibility: realtime отвечает только за real-time
- Расширяемость: легко добавлять новые real-time фичи
- Одно WebSocket соединение вместо двух (чаты + уведомления)
20 lines
585 B
Python
20 lines
585 B
Python
import os
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "eusrr_backend.settings")
|
|
|
|
from django.core.asgi import get_asgi_application
|
|
django_asgi_app = get_asgi_application()
|
|
|
|
from channels.auth import AuthMiddlewareStack
|
|
from channels.routing import ProtocolTypeRouter, URLRouter
|
|
from realtime.routing import websocket_urlpatterns
|
|
from eusrr_backend.channels_jwt import JWTAuthMiddleware
|
|
|
|
|
|
application = ProtocolTypeRouter({
|
|
"http": django_asgi_app,
|
|
"websocket": JWTAuthMiddleware(
|
|
AuthMiddlewareStack(
|
|
URLRouter(websocket_urlpatterns)
|
|
)
|
|
),
|
|
}) |