server accepts websocket connection
This commit is contained in:
@ -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=;
|
||||
|
@ -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())})
|
||||
})
|
||||
|
@ -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")
|
||||
|
@ -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'
|
||||
|
@ -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')
|
||||
]
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
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
|
||||
|
@ -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 {
|
||||
|
Reference in New Issue
Block a user