""" ASGI config for platform project. It exposes the ASGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ """ import os from django.core.asgi import get_asgi_application from channels.routing import ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack from channels.security.websocket import AllowedHostsOriginValidator os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') # Initialize Django ASGI application early django_asgi_app = get_asgi_application() # WebSocket URL routing from config.routing import websocket_urlpatterns from apps.users.middleware.websocket_auth import JWTAuthMiddlewareStack application = ProtocolTypeRouter({ # HTTP requests "http": django_asgi_app, # WebSocket connections "websocket": AllowedHostsOriginValidator( JWTAuthMiddlewareStack( URLRouter(websocket_urlpatterns) ) ), })