server accepts websocket connection
This commit is contained in:
@ -4,7 +4,7 @@ RUN apt update
|
|||||||
RUN apt upgrade -y
|
RUN apt upgrade -y
|
||||||
|
|
||||||
RUN apt install -y python3 python3-pip postgresql-client
|
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_HOST=;
|
||||||
ARG DB_NAME=;
|
ARG DB_NAME=;
|
||||||
|
@ -9,8 +9,17 @@ https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from channels.routing import ProtocolTypeRouter, URLRouter
|
||||||
|
from django.urls import path
|
||||||
from django.core.asgi import get_asgi_application
|
from django.core.asgi import get_asgi_application
|
||||||
|
|
||||||
|
from .websocket import WebsocketHandler
|
||||||
|
|
||||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
|
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())})
|
||||||
|
})
|
||||||
|
@ -1,5 +1,18 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
class TaMereLaPute(models.Model):
|
class User(models.Model):
|
||||||
id = models.AutoField(primary_key=True)
|
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")
|
||||||
|
@ -31,6 +31,8 @@ ALLOWED_HOSTS = ['*']
|
|||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
|
'daphne',
|
||||||
|
'channels',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
@ -125,3 +127,5 @@ STATIC_URL = 'static/'
|
|||||||
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
|
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
|
||||||
|
|
||||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||||
|
|
||||||
|
ASGI_APPLICATION = 'server.asgi.applicatio'
|
||||||
|
@ -18,6 +18,5 @@ from django.urls import path
|
|||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("",views.index, name='patate'),
|
path("",views.index, name='patate')
|
||||||
path("set",views.set, name='patate douce')
|
|
||||||
]
|
]
|
||||||
|
@ -1,15 +1,5 @@
|
|||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from .models import TaMereLaPute
|
from .models import User
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
try:
|
return HttpResponse("AAAAAAAAAAAAAAAAAAAAAAA")
|
||||||
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")
|
|
||||||
|
|
||||||
|
@ -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"}))
|
@ -2,4 +2,5 @@ until pg_isready -h "$DB_HOST"; do sleep 0.5 ;echo "waiting for database";done
|
|||||||
cd /var/www/djangoserver/server
|
cd /var/www/djangoserver/server
|
||||||
python3 manage.py makemigrations server
|
python3 manage.py makemigrations server
|
||||||
python3 manage.py migrate
|
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
|
||||||
|
@ -28,6 +28,22 @@ http {
|
|||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_pass http://djangoserver:8000;
|
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 {
|
location /admin {
|
||||||
|
Reference in New Issue
Block a user