Я работаю над созданием приложения чата в реальном времени с django каналами, например, WhatsApp. Это работает, и я могу отправить / получить сообщение для активного чата. Но главная проблема в том, как поднять уведомление, когда новое сообщение приходит от других контактов? consumer.py
class TwilioWChatConsumer(AsyncConsumer):
async def websocket_connect(self, event):
other_user = self.scope['url_route']['kwargs']['contect_id']
me = self.scope['user']
self.login_contact = await self.get_contact_by_user(me)
if me.is_authenticated:
if me.id == other_user:
await self.send({
"type": "websocket.close",
})
return False
self.thread_obj = await self.get_thread(me, other_user)
self.chat_room = f"ChatThread_{self.thread_obj.id}"
await self.channel_layer.group_add(
self.chat_room,
self.channel_name
)
await self.send({
"type": "websocket.accept",
})
else:
await self.send({
"type": "websocket.close",
})
async def websocket_receive(self, event):
user = self.scope['user']
other_contect_id = self.scope['url_route']['kwargs']['contect_id']
if user.is_authenticated:
text = json.loads(event['text']) if type(event['text']) == str else event['text']
other_contact = await self.get_contact(event['from_contect'])
chatMsg = await self.create_chat_message(other_contact, text['Body'])
myResponse = {
'message': event['text']['Body'],
'contact_type': 'asker',
'timestamp': str(chatMsg.timestamp.strftime("%d %b %y, %H:%M:%S")),
}
await self.channel_layer.group_send(
self.chat_room,
{
'type': 'chat_message',
'text': json.dumps(myResponse)
}
)
return True
Проверьте скриншот ниже для лучшего понимания
окно чата