Django + Каналы: сообщение прерывается при постинге
Я создаю страницу, которая содержит форму для создания игры (несколько полей) и чуть ниже список всех созданных игр.
Когда я публикую новую игру, я хотел бы, чтобы список игр обновлялся для всех подключенных пользователей страницы.
My consumer.py:
def receive(self, text_data):
games = serialize_games()
# Send new game info to Lobby
async_to_sync(self.channel_layer.group_send)( 'Lobby', { 'type': 'message_to_lobby', 'message': games, })
def message_to_lobby(self, event):
print('messages sent to lobby')
message = event['message']
self.send(text_data = message)
В моем шаблоне есть часть кода jquery, которая посылает сообщение в websocket непосредственно перед отправкой сообщения:
$("#create_game_form").submit(function(e) { alert('sent');LobbySocket.send(JSON.stringify({ 'message': 'reload' }));});
Во время постинга функция receive вызывается, а обработчик сообщения (message_to_lobby) - нет, поскольку рендеринг в секции представления отключает websocket до...
Поможет ли использование асинхронных функций вместо этого (я не очень понимаю, почему...)? Или, может быть, Django + каналы не предназначены для того, чтобы POST и каналы работали вместе?
В противном случае, у меня может быть возможность попросить потребителя посылать сигнал обновления пользователям группы через 2 секунды или что-то вроде этого, но я не нахожу это очень элегантным.