From 86a17b9955fc09ba3ad1281e620179b65f7427bf Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 24 Jul 2023 14:32:13 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=20ws?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/asgi.py | 22 ++++++++++++++++++---- apps/jumpserver/routing.py | 26 ++++---------------------- apps/jumpserver/settings/base.py | 3 +++ apps/jumpserver/settings/libs.py | 2 +- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/apps/jumpserver/asgi.py b/apps/jumpserver/asgi.py index a71974685..428781225 100644 --- a/apps/jumpserver/asgi.py +++ b/apps/jumpserver/asgi.py @@ -1,7 +1,21 @@ import os -import django -from channels.routing import get_default_application + +from channels.auth import AuthMiddlewareStack +from channels.routing import ProtocolTypeRouter, URLRouter +from channels.security.websocket import AllowedHostsOriginValidator +from django.core.asgi import get_asgi_application + +from .routing import urlpatterns os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jumpserver.settings") -django.setup() -application = get_default_application() +application = ProtocolTypeRouter({ + # Django's ASGI application to handle traditional HTTP requests + "http": get_asgi_application(), + + # WebSocket chat handler + "websocket": AllowedHostsOriginValidator( + AuthMiddlewareStack( + URLRouter(urlpatterns) + ) + ), +}) diff --git a/apps/jumpserver/routing.py b/apps/jumpserver/routing.py index ee3885b9e..c89da7f39 100644 --- a/apps/jumpserver/routing.py +++ b/apps/jumpserver/routing.py @@ -1,27 +1,9 @@ -from channels.auth import AuthMiddlewareStack -from channels.routing import ProtocolTypeRouter, URLRouter -from channels.security.websocket import AllowedHostsOriginValidator -from django.core.asgi import get_asgi_application - from notifications.urls.ws_urls import urlpatterns as notifications_urlpatterns from ops.urls.ws_urls import urlpatterns as ops_urlpatterns from settings.urls.ws_urls import urlpatterns as setting_urlpatterns from terminal.urls.ws_urls import urlpatterns as terminal_urlpatterns -from .middleware import WsSignatureAuthMiddleware -urlpatterns = [] -urlpatterns += ops_urlpatterns + \ - notifications_urlpatterns + \ - setting_urlpatterns + \ - terminal_urlpatterns - -application = ProtocolTypeRouter({ - "http": get_asgi_application(), - 'websocket': AllowedHostsOriginValidator( - WsSignatureAuthMiddleware( - AuthMiddlewareStack( - URLRouter(urlpatterns) - ) - ) - ), -}) +urlpatterns = ops_urlpatterns + \ + notifications_urlpatterns + \ + setting_urlpatterns + \ + terminal_urlpatterns diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index e70156b3b..179fe77af 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -142,6 +142,9 @@ MIDDLEWARE = [ 'jumpserver.middleware.EndMiddleware', ] +if DEBUG or DEBUG_DEV: + INSTALLED_APPS.insert(0, 'daphne') + ROOT_URLCONF = 'jumpserver.urls' TEMPLATES = [ diff --git a/apps/jumpserver/settings/libs.py b/apps/jumpserver/settings/libs.py index 0c35ba322..8fe71f343 100644 --- a/apps/jumpserver/settings/libs.py +++ b/apps/jumpserver/settings/libs.py @@ -127,7 +127,7 @@ CHANNEL_LAYERS = { }, } -ASGI_APPLICATION = 'jumpserver.routing.application' +ASGI_APPLICATION = 'jumpserver.asgi.application' # Dump all celery log to here CELERY_LOG_DIR = os.path.join(PROJECT_DIR, 'data', 'celery')