server accepts websocket connection

This commit is contained in:
2024-08-21 20:05:14 +02:00
parent 1a4c919473
commit 1eb7da97d2
9 changed files with 64 additions and 19 deletions

View File

@ -4,7 +4,7 @@ RUN apt update
RUN apt upgrade -y
RUN apt install -y python3 python3-pip postgresql-client
RUN pip3 install django psycopg
RUN pip3 install django psycopg "channels[daphne]"
ARG DB_HOST=;
ARG DB_NAME=;

View File

@ -9,8 +9,17 @@ https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/
import os
from channels.routing import ProtocolTypeRouter, URLRouter
from django.urls import path
from django.core.asgi import get_asgi_application
from .websocket import WebsocketHandler
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
application = get_asgi_application()
django = get_asgi_application()
application = ProtocolTypeRouter({
"http": django,
"websocket":URLRouter({path("ws",WebsocketHandler.as_asgi())})
})

View File

@ -1,5 +1,18 @@
from django.db import models
class TaMereLaPute(models.Model):
class User(models.Model):
id = models.AutoField(primary_key=True)
test = models.CharField(max_length=200)
nickname = models.CharField(max_length=20)
mail = models.EmailField()
password = models.CharField(max_length=100)
class Message(models.Model):
id = models.AutoField(primary_key=True)
date = models.DateTimeField(auto_now_add=True)
sender = models.ForeignKey("User",on_delete=models.SET_NULL, null=True, related_name="sender")
to = models.ForeignKey("User", on_delete=models.CASCADE, related_name="to")
class Game(models.Model):
id = models.AutoField(primary_key=True)
player1 = models.ForeignKey("User", on_delete=models.SET_NULL, null=True, related_name="p1")
player2 = models.ForeignKey("User", on_delete=models.SET_NULL, null=True, related_name="p2")

View File

@ -31,6 +31,8 @@ ALLOWED_HOSTS = ['*']
# Application definition
INSTALLED_APPS = [
'daphne',
'channels',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
@ -125,3 +127,5 @@ STATIC_URL = 'static/'
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
ASGI_APPLICATION = 'server.asgi.applicatio'

View File

@ -18,6 +18,5 @@ from django.urls import path
from . import views
urlpatterns = [
path("",views.index, name='patate'),
path("set",views.set, name='patate douce')
path("",views.index, name='patate')
]

View File

@ -1,15 +1,5 @@
from django.http import HttpResponse
from .models import TaMereLaPute
from .models import User
def index(request):
try:
a = TaMereLaPute.objects.get(id=1)
return HttpResponse(a.test)
except TaMereLaPute.DoesNotExist:
return HttpResponse("does not exist")
def set(request):
a = TaMereLaPute(test="coucou les musulmans moi je mange la glace")
a.save()
return HttpResponse("done")
return HttpResponse("AAAAAAAAAAAAAAAAAAAAAAA")

View File

@ -0,0 +1,13 @@
from channels.generic.websocket import WebsocketConsumer
class WebsocketHandler(WebsocketConsumer):
def connect(self):
self.accept()
print("AAAAAAAAAAAAA")
def disconnect(self, close_code):
print("CCCCCCCCCCCCCC")
def receive(self, message):
print("BBBBBBBBBBBB")
self.send(text_data=json.dumps({"AAAAA":"received"}))

View File

@ -2,4 +2,5 @@ until pg_isready -h "$DB_HOST"; do sleep 0.5 ;echo "waiting for database";done
cd /var/www/djangoserver/server
python3 manage.py makemigrations server
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000
#python3 manage.py runserver 0.0.0.0:8000
daphne -p 8000 -b 0.0.0.0 server.asgi:application

View File

@ -28,6 +28,22 @@ http {
location / {
proxy_pass http://djangoserver:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ws {
proxy_pass http://djangoserver:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
}
location /admin {