import json from asgiref.sync import async_to_sync from channels.generic.websocket import WebsocketConsumer class ChatConsumer(WebsocketConsumer): def connect(self): self.room_name = 'main' 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() def disconnect(self, close_code): # 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): # text_data_json = json.loads(text_data) # message = text_data_json["message"] print(f'received {text_data}') # Send message to room group # chat.message calls the chat_message method async_to_sync(self.channel_layer.group_send)( self.room_group_name, {"type": "chat.message", "message": text_data} ) # Receive message from room group def chat_message(self, event): message = event["message"] # Send message to WebSocket self.send(text_data=message)