Как вызвать другую функцию websocket в потребительских функциях каналов django?
У меня есть следующий код в consumers.py
from channels.consumer import SyncConsumer
from asgiref.sync import async_to_sync
class EchoConsumer(SyncConsumer):
def websocket_connect(self,event):
self.room_name = 'broadcast'
self.send({
'type':'websocket.accept'
})
async_to_sync(self.channel_layer.group_add(self.room_name, self.channel_name))
print(f'[{self.channel_name}] - you are connected')
def websocket_receive(self,event):
print(f'[{self.channel_name}] - Recieved message - {event["text"]}')
async_to_sync(self.channel_layer.group_send)(
self.room_name,
{
'type': 'websocket.message',
'text': event.get('text')
}
)
def websocket_message(self,event):
print(f'[{self.channel_name}] - message Sent - {event["text"]}')
self.send({
'type':'websocket.send',
'text':event.get('text')
})
def websocket_disconnect(self,event):
print(f'[{self.channel_name}] - disconnected')
print('connection is disconnected')
async_to_sync(self.channel_layer.group_discard(self.room_name, self.channel_name))
Я хочу вызывать функцию message каждый раз, когда сообщение получено, поэтому в функции websocket_recieve я добавил 'type': 'websocket.message',
но я не знаю, почему функция websocket_message не вызывается?
Я новичок в django channels.Сообщение успешно принимается от любого соединения, но не отправляется ни на одно соединение.
любая помощь будет оценена по достоинству.
измените функцию websocket_connect на эту
def websocket_connect(self,event):
self.room_name = 'broadcast'
self.send({
'type':'websocket.accept'
})
async_to_sync(self.channel_layer.group_add)(self.room_name, self.channel_name)
print(f'[{self.channel_name}] - you are connected')