This commit is contained in:
xuyue committed 2025-07-15 19:54:59 +08:00
1 parent 31cacb776f
commit 8701c60a17
11 files changed
+42 -20

No files matched your search

+7 -3
View File
@@ -10,15 +10,19 @@ https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/
import os import os
from channels.routing import ProtocolTypeRouter, URLRouter from channels.routing import ProtocolTypeRouter, URLRouter
# from channels.auth import AuthMiddlewareStack from channels.auth import AuthMiddlewareStack
from channels.security.websocket import AllowedHostsOriginValidator
from django.core.asgi import get_asgi_application from django.core.asgi import get_asgi_application
# from .urls import ws_urlpatterns from chat.url import websocket_urlpatterns
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings")
application = ProtocolTypeRouter( application = ProtocolTypeRouter(
{ {
"http": get_asgi_application(), "http": get_asgi_application(),
# "websocket": AuthMiddlewareStack(URLRouter(ws_urlpatterns)), "websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(URLRouter(websocket_urlpatterns))
),
} }
) )
+2 -1
View File
@@ -54,6 +54,7 @@ INSTALLED_APPS = [
"account", "account",
"task", "task",
"submission", "submission",
"chat",
] ]
MIDDLEWARE = [ MIDDLEWARE = [
@@ -86,7 +87,7 @@ TEMPLATES = [
] ]
WSGI_APPLICATION = "api.wsgi.application" WSGI_APPLICATION = "api.wsgi.application"
ASGI_APPLICATION = "api.asgi.application"
# Database # Database
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases # https://docs.djangoproject.com/en/5.1/ref/settings/#databases
+1 -5
View File
@@ -20,7 +20,7 @@ from django.urls import path
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
from ninja import NinjaAPI from ninja import NinjaAPI
from .ws import Consumer from chat.consumers import Consumer
api = NinjaAPI() api = NinjaAPI()
@@ -36,7 +36,3 @@ apis = [
] ]
urlpatterns = apis + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns = apis + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
ws_urlpatterns = [
path("ws/", Consumer.as_asgi()),
]
-11
View File
@@ -1,11 +0,0 @@
from channels.generic.websocket import AsyncWebsocketConsumer
class Consumer(AsyncWebsocketConsumer):
async def connect(self):
await self.accept()
async def disconnect(self):
pass
async def receive(self, text_data):
await self.send(text_data=text_data)
View File
Whitespace-only changes.
View File
Whitespace-only changes.
+6
View File
@@ -0,0 +1,6 @@
from django.apps import AppConfig
class ChatConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'chat'
+17
View File
@@ -0,0 +1,17 @@
import json
from channels.generic.websocket import WebsocketConsumer
class ChatConsumer(WebsocketConsumer):
def connect(self):
self.accept()
def disconnect(self, close_code):
pass
def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json["message"]
self.send(text_data=json.dumps({"message": message}))
View File
Whitespace-only changes.
+3
View File
@@ -0,0 +1,3 @@
from django.db import models
# Create your models here.
+6
View File
@@ -0,0 +1,6 @@
from django.urls import path
from .consumers import ChatConsumer
websocket_urlpatterns = [
path("ws/chat/", ChatConsumer.as_asgi()),
]