Как сделать комнаты для игры с Flask? - PullRequest
0 голосов
/ 05 января 2020

Я использую Flask -SocketIO на сервере и socketIO-клиент на P C. После запуска приложения на P C отправляется запрос на получение кода комнаты:

socketIO = SocketIO('192.168.43.217', 8080)

def get_code(code):
    submit_code = code
    print('code =', code)


socketIO.emit('new_room')
socketIO.on('get_code', get_code)
socketIO.wait()

Сервер отправляет код:

@socketio.on('new_room')
def new_room():

    code = randint(1000, 9999)

    db.session.add(Rooms(code))
    db.session.commit()
    emit('get_code', code)

Я добавил socketio.emit('new_user', current_user.name) после пользователя, и этот код отправляет имя клиенту P C.

Но если я создаю две или более комнат, я вижу, что один и тот же пользователь вошел в другую комнату.

Как я могу сделать что-то как socketio.emit('new_user', current_user.name, namespace=f'/{room_code}')? Это будет излучаться только в нужную комнату.

Или это не правильный путь? После этого игра запустится, P C -клиент покажет ответы, игроки получат некоторые ответы от P C, а затем отправят его обратно так:

1) Код генерируется на сервере и компьютер возвращается

2) Человек с другого устройства вводит код, его ник и подключается

3) Он появляется в комнате

4) Появляется запись на компьютере, к которому он подключен

5) Игра начинается, задача отображается

6) Варианты ответов приходят на телефоны

7) Компьютер показывает, кто ответил, ну тогда уже есть чисто игровые логи c. Расчет очков и прочего

1 Ответ

0 голосов
/ 06 января 2020

После того, как вы сгенерируете комнату, вы должны добавить в нее клиента, позвонив по номеру:

from flask_socketio import enter_room

@socketio.on('new_room')
def new_room():

    code = randint(1000, 9999)
    enter_room(str(code))

    db.session.add(Rooms(code))
    db.session.commit()
    emit('get_code', code)

Затем вы можете отправить событие пользователю в этой комнате с помощью:

socketio.emit('new_user', current_user.name, room=str(room_code))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...