0% found this document useful (0 votes)
18 views1 page

WebSocket Chat Consumer Implementation

The document defines a ChatConsumer class for handling WebSocket connections in a chat application using Django Channels. It includes methods for connecting to a chat room, disconnecting, receiving messages from clients, and broadcasting messages to all clients in the room. The class utilizes asynchronous programming to manage real-time communication efficiently.

Uploaded by

aramstr5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views1 page

WebSocket Chat Consumer Implementation

The document defines a ChatConsumer class for handling WebSocket connections in a chat application using Django Channels. It includes methods for connecting to a chat room, disconnecting, receiving messages from clients, and broadcasting messages to all clients in the room. The class utilizes asynchronous programming to manage real-time communication efficiently.

Uploaded by

aramstr5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

# chat/consumers.

py
from channels.generic.websocket import AsyncWebsocketConsumer
import json

class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name

# Join room group


await self.channel_layer.group_add(
self.room_group_name,
self.channel_name
)

await self.accept()

async def disconnect(self, close_code):


# Leave room group
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name
)

# Receive message from WebSocket


async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']

# Send message to room group


await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message
}
)

# Receive message from room group


async def chat_message(self, event):
message = event['message']

# Send message to WebSocket


await self.send(text_data=json.dumps({
'message': message
}))

You might also like