Group_send() в каналах Django
Когда создается канал, я добавляю его в группу. Проблема в том, что сервер отправляет сообщение только самому последнему каналу в группе, а не рассылает его всей группе. Если у меня два канала в группе, то сообщение будет отправлено на самый последний канал в группе, дважды. Помогите отладить.
` from channels.generic.websocket import WebsocketConsumer,AsyncWebsocketConsumer из .models import Chat, Room from asgiref.sync import async_to_sync,sync_to_async
class MyAsyncWebsocketConsumer(AsyncWebsocketConsumer): async def connect(self): print('connected...') self.group_name = self.scope['url_route']['kwargs']['group_name'] await self.channel_layer.group_add(self.group_name, self.channel_name)
# Get old chats from database
chat = await sync_to_async(Chat.objects.get)(room = await sync_to_async(Room.objects.get)(room_name = self.group_name))
await self.accept()
# Show old chats
await self.send(text_data=chat.chat)
async def disconnect(self, code):
print('disconnected....')
await self.channel_layer.group_discard(self.group_name, self.channel_name)
async def receive(self, text_data=None, bytes_data=None):
print('Server sending messages...')
# if user is authenticated save chat in database
if self.scope['user'].is_authenticated:
print('User is authenticated')
prev_chat = await sync_to_async(Chat.objects.get)(room = await sync_to_async(Room.objects.get)(room_name = self.group_name))
new_chat = prev_chat.chat + '\n' + text_data
prev_chat.chat = new_chat
await sync_to_async(prev_chat.save)()
# Saved
# Broadcasts
await self.channel_layer.group_send(
self.group_name,
{
"type": "chat.message",
"message": text_data,
}
)
else:
print('User is not authenticated')
async def chat_message(self, event):
# Send a message down to the client
print('Sending actual message...',event["message"])
await self.send(event["message"])
# print(self.channel_name)
`