#python #django #sockets #websocket #django-channels
Вопрос:
Моя цель-создать потребителя, который предоставит нам функциональность приватного чата. В приватном чате должно быть два пользователя, которые обмениваются сообщениями. Напишите сейчас, любой может увидеть чье-либо сообщение, это то, что я пытаюсь исправить.
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, }))
Заранее большое вам спасибо, если вы потратите время на чтение этого и ответите.