Асинхронный дизайн запроса-ответа в Flutter web

#flutter #architecture #flutter-web

Вопрос:

Я создаю веб-приложение с помощью Flutter, и у меня есть некоторые запросы, которые занимают много времени на стороне сервера, и «удерживают» http-ресурсы до тех пор, пока на запросы не будут даны ответы.

Чтобы справиться с этим, я читал, что вы можете провести опрос или другие решения (см. Здесь).

Каков правильный дизайн в flutter? Как бы вы реализовали это в flutter?

Комментарии:

1. По — настоящему простого способа сделать это нет. Несмотря на то, что браузеры имеют движок Тьюринга, он действительно не подходит для таких задач. Вместо этого переместите его на сервер и настройте интерфейс REST для его запуска.

2. Запросы, конечно, занимают время на стороне сервера 🙂 Но на стороне клиента есть несколько ресурсов, которые «заняты» до тех пор, пока сервер не ответит. например, chrome ставит в очередь другие http-запросы, потому что их может быть 6 одновременно.

Ответ №1:

У меня есть несколько запросов, которые занимают много времени, и я «удерживаю» http-ресурсы до тех пор, пока на запросы не будут даны ответы

Похоже, вы используете синхронный подход, когда ваша программа сидит и ждет, пока не вернутся ответы. Вместо этого попробуйте использовать асинхронный подход, который позволит вашей программе продолжать работать, пока вы ждете ответа.

Я ничего не знаю о Дротике или Флаттере, но это должно помочь вам начать:

Обновление в ответ на комментарий OP

Если у вас на сервере выполняются длительные задачи, и вам необходимо вернуть данные веб-клиенту, то асинхронные HTTP-запросы являются законной архитектурой, основанной на том, что вы объяснили до сих пор.

Если обработка заблокирована, то, возможно, есть проблема с вашей реализацией. В качестве альтернативы могут возникнуть проблемы между браузером и клиентом (проблемы с прокси-сервером и т. Д.), Поэтому проверьте наличие таких проблем.

Если вам нужен совсем другой вариант, возможно, стоит изучить веб-сайты.

Комментарии:

1. Я работаю асинхронно, моя программа продолжает работать, но по-прежнему больше не могут обрабатываться запросы из-за ограничения ресурсов в веб-браузере.

2. Сколько запросов вы делаете? Каков размер ожидаемого ответа? Вы обращались с запросами к почтальону, чтобы убедиться, что на стороне сервера не происходит ничего странного? Покажите какой-нибудь код, и, возможно, кто-нибудь сможет вам помочь.

3. @user693336 Я делаю около 30 запросов, на «обработку» каждого из которых серверу требуется несколько секунд, а размер ответа очень мал. Это нормально, что сервер требует времени, так как это сложные вычисления, и это не та проблема, которую я пытаюсь решить. Вопрос в архитектуре дизайне — у меня есть запросы, которые занимают много времени на стороне сервера, и вопрос в том, какую архитектуру использовать (очевидно, что HTTP-запросы не подойдут).

4. Являются ли ваши задачи такими, чтобы передача данных в приложение работала? Кроме того, можно ли предварительно рассчитать данные?

5. @YaaraZegelman — «но по — прежнему больше нельзя обрабатывать запросы из-за ограничения ресурсов в веб-браузере» — какие ошибки вы получаете? Если это всего ~30 небольших запросов, то я не понимаю, почему у браузера возникают проблемы. Без конкретных подробностей о каких-либо ошибках мы находимся в полном неведении.