Channel Layers

This commit is contained in:
Juhn-Vitus Saß
2025-03-15 12:57:05 +01:00
parent 889134784a
commit b6831616cc
4 changed files with 40 additions and 5 deletions

3
.gitignore vendored
View File

@@ -2,4 +2,5 @@ __pycache__
.venv .venv
db.sqlite3 db.sqlite3
tailwindcss.exe tailwindcss.exe
t-style.css t-style.css
dump.rdb

View File

@@ -1,18 +1,40 @@
# chat/consumers.py
import json import json
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer from channels.generic.websocket import WebsocketConsumer
class ChatConsumer(WebsocketConsumer): class ChatConsumer(WebsocketConsumer):
def connect(self): def connect(self):
self.room_name = self.scope["url_route"]["kwargs"]["room_name"]
self.room_group_name = f"chat_{self.room_name}"
# Join room group
async_to_sync(self.channel_layer.group_add)(
self.room_group_name, self.channel_name
)
self.accept() self.accept()
def disconnect(self, close_code): def disconnect(self, close_code):
pass # Leave room group
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name, self.channel_name
)
# Receive message from WebSocket
def receive(self, text_data): def receive(self, text_data):
text_data_json = json.loads(text_data) text_data_json = json.loads(text_data)
message = text_data_json["message"] message = text_data_json["message"]
# Send message to room group
async_to_sync(self.channel_layer.group_send)(
self.room_group_name, {"type": "chat.message", "message": message}
)
# Receive message from room group
def chat_message(self, event):
message = event["message"]
# Send message to WebSocket
self.send(text_data=json.dumps({"message": message})) self.send(text_data=json.dumps({"message": message}))

View File

@@ -133,4 +133,15 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
LOGIN_URL = '/account/login/' LOGIN_URL = '/account/login/'
# Daphne # Daphne
ASGI_APPLICATION = "core.asgi.application" ASGI_APPLICATION = "core.asgi.application"
# Channels
ASGI_APPLICATION = "core.asgi.application"
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [("127.0.0.1", 6379)],
},
},
}

View File

@@ -1,3 +1,4 @@
django~=5.1.4 django~=5.1.4
channels~=4.2.0 channels~=4.2.0
daphne~=4.1.2 daphne~=4.1.2
channels_redis