Как получить переменную от python flask до JavaScript? - PullRequest
0 голосов
/ 26 марта 2020

Я видел, как сделать пост-запрос от JavaScript, чтобы получить данные с сервера, но как бы я это сделал, перевернул. Я хочу вызвать на сервере flask функцию, которая затем будет динамически обновлять переменную на стороне JavaScript для отображения. Есть ли способ сделать это эффективным способом, который не включает периодическую итерацию. Я использую API и хочу, чтобы API вызывался только один раз для обновления.

1 Ответ

1 голос
/ 26 марта 2020

Для вас есть три основных варианта c:

  1. Опрос - с помощью этого метода вы будете периодически отправлять запрос на сервер (возможно, каждый 5 секунд, например) и попросить обновления. Плюс в том, что это легко реализовать. Недостатком является то, что многие запросы будут ненужными. Похоже, это не лучший вариант для вас.

  2. Длинный опрос - Этот метод означает, что вы должны открыть запрос на сервере и оставить запрос открытым в течение длительного периода времени. Когда сервер получает новую информацию, он отправляет ответ и закрывает запрос, после чего клиент немедленно открывает новый запрос «длительного опроса». Это устраняет некоторые из ненужных запросов при регулярном опросе, но это своего рода хак, поскольку HTTP предназначен для достаточно короткого цикла ответа на запрос. Некоторые поставщики PaaS, например, допускают только 30-секундное окно для этого.

  3. Веб-сокеты - Это несколько сложнее в настройке, но в конечном итоге является лучшим решением для обмена данными между сервером и клиентом в реальном времени (и наоборот). Соединение сокета открывается между сервером и клиентом, и данные передаются взад и вперед всякий раз, когда любая сторона хочет сделать это. Javascript теперь имеет полную поддержку веб-сокетов, а Flask имеет некоторые расширения, которые могут помочь вам в этом. Есть даже отличные сторонние управляемые решения, такие как Pusher.com, которые могут очень быстро дать вам рабочую концепцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...