@StickPunk

Flask как вызвать редирект для юзера из касомного класса?

У меня есть сокет ивент, в котором запускается метод класса.

@socketio.on("init")
def init(user_data: dict) -> None:
    sid = request.sid
    user_agent = request.headers.get("User-Agent")

    clients.update({
        sid: {
            "client": Client(sid, user_agent=user_agent),
            "data": user_data
        }
    })

    socketio.start_background_task(target=clients[sid]["client"].run)


Там происходят некоторые проверки в цикле и когда условие выполнено и цикл прерван, мне нужно сделать редирект на другую страницу. Это возможно?
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
В вашем случае, как я понимаю, Вы работаете по SSE.
С одной стороны - это протокол поверх HTTP (который позволяет делать редирект через заголовки).
С другой - это протокол с установленным соединением, и заголовки HTTP устанавливаются в начале сессии.
Другими словами - если сессия SSE установлена, то заголовки поменять уже невозможно :(

В принципе, вариантов 2:
1) делать редирект на стороне клиента, посылая какой нибудь event, а на стороне клиента уже делать редирект.
2) разорвать сессию со стороны сервера c посылкой уникального event id и при следующем заходе клиента с этим же event id - делать перенаправление
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы