Как зациклить события 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
    }))
Вернуться на верх