From 394d74b553360a82f803a34205a8df609777fdff Mon Sep 17 00:00:00 2001 From: Bobby Date: Mon, 15 May 2023 07:30:20 -0400 Subject: Simple working live chat --- chat/consumers.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 chat/consumers.py (limited to 'chat/consumers.py') diff --git a/chat/consumers.py b/chat/consumers.py new file mode 100644 index 00000000..be1cf265 --- /dev/null +++ b/chat/consumers.py @@ -0,0 +1,40 @@ +import json +from channels.generic.websocket import WebsocketConsumer +from asgiref.sync import async_to_sync + +class ChatConsumer(WebsocketConsumer): + def connect(self): + self.room_group_name = 'chat' + async_to_sync(self.channel_layer.group_add)( + self.room_group_name, + self.channel_name + ) + self.accept() + + def receive(self, text_data): + text_data_json = json.loads(text_data) + message = text_data_json['message'] + username = text_data_json['username'] + async_to_sync(self.channel_layer.group_send)( + self.room_group_name, + { + 'type': 'chat', + 'message': message, + 'username': username + } + ) + + def chat(self, event): + message = event['message'] + username = event['username'] + self.send(text_data=json.dumps({ + 'message': message, + 'username': username + })) + + def disconnect(self, close_code): + async_to_sync(self.channel_layer.group_discard)( + self.room_group_name, + self.channel_name + ) + -- cgit v1.2.3