Как зациклить события websocket в django в игре в рулетку
Здравствуйте, коллеги-программисты, в настоящее время я использую Django с WebSockets для создания реплики, близкой к https://bloxflip.com/roulette или любому виду синхронизированной онлайн рулетки, которую вы можете иметь, которая включает в себя множество ставок от всех различных игроков. Я нахожусь на этом этапе прикрепленное изображение, и я пытаюсь создать цикл бэкенда, который будет работать между состояниями (ожидание ставок, вычисление хэшей, прокрутка, перезапуск), единственное решение, которое я получил, это использование рабочих из Celery, которые будут циклически работать на сервере Redis. Мне интересно, есть ли какое-нибудь другое решение, которое поможет мне сделать этот цикл в бэкенде, чтобы я мог отправить его на фронтенд с помощью WebSockets.
Дайте мне знать, какой другой метод я могу использовать или могу ли я улучшить мой фактический код.
consumers.py
class RouletteConsumer(WebsocketConsumer):
def connect(self):
self.room_group_name = 'roulette'
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()`
current_state = states[0]
self.send(text_data=json.dumps({
'type':'current_state',
'current_state': current_state
}))
def receive(self, text_data):
text_data_json = json.loads(text_data)
bet_data = text_data_json['bet_data']
async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type':'send_bet',
'bet_data': bet_data,
}
)
def send_bet(self, event):
bet_data = event['bet_data']
self.send(text_data=json.dumps({
'type':'bet',
'bet_data': bet_data
}))
def current_state(self, event):
state = event['current_state']
self.send(text_data=json.dumps({
'type':'state',
'current_state': state
}))