Как создать расходник для приватного чата с помощью django chennals?
Моя цель - создать потребителя, который предоставляет нам функциональность приватного чата. В приватном чате должны быть два пользователя, которые обмениваются сообщениями. Сейчас любой может увидеть сообщение любого пользователя, вот что я пытаюсь исправить
consumer.py
# chat/consumers.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer
class ProjectConsumer(AsyncWebsocketConsumer):
async def connect(self):
parameter =self.room_name = self.scope['url_route']['kwargs']["username"]
print("url_parameter ",parameter)
self.project_name = parameter
# Join room group
await self.channel_layer.group_add(
self.project_name,
self.channel_name
)
await self.accept()
async def disconnect(self, close_code):
# Leave room group
await self.channel_layer.group_discard(
self.project_name,
self.channel_name
)
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
sender = text_data_json['sender']
receiver = text_data_json['receiver']
message = text_data_json['message']
object = {
'sender':sender,
'receiver':receiver,
'message':message,
}
# Send message to room group
await self.channel_layer.group_send(
self.project_name,
{
'type': 'sent', #function name as an event type
'object': object #function parameters as an event object
}
)
# Receive message from room group
async def sent(self, event):
sender = event['object']["sender"]
receiver = event['object']["receiver"]
message = event['object']["message"]
# Send message to WebSocket
await self.send(text_data=json.dumps({
'sender':sender,
'receiver':receiver,
'message':message,
}))
Заранее большое спасибо, если вы потратите время на то, чтобы прочитать это и ответить.