【问题标题】:Asynchronous request-reply design in Flutter webFlutter web 中的异步请求-回复设计
【发布时间】:2021-09-05 08:07:42
【问题描述】:

我正在使用 Flutter 构建一个 Web 应用程序,我有一些请求需要在服务器端花费大量时间,并且“持有”http 资源直到请求得到响应。

我读到,要解决这个问题,您可以进行投票或其他解决方案(请参阅here)。

flutter 的正确设计是什么?你会如何在 Flutter 中实现它?

【问题讨论】:

  • 没有真正简单的方法可以做到这一点。尽管浏览器有一个图灵完备的引擎,但它确实不适合这样的任务。而是将其移至服务器,并设置一个 REST 接口来触发它。
  • 请求在服务器端当然需要时间:) 但是客户端有一些资源被“占用”直到服务器响应。例如,chrome 将其他 http 请求排队,因为它一次可以有 6 个。

标签: flutter architecture flutter-web


【解决方案1】:

我有一些需要很长时间的请求,并且“持有”http 资源,直到请求得到答复

听起来您正在使用同步方法,您的程序会坐在那里等待响应返回。相反,请尝试使用异步方法,这将使您的程序在您等待响应返回时继续运行。

我对 Dart 或 Flutter 一无所知,但这些应该可以帮助您入门:

针对 OP 的评论进行更新

如果您在服务器上发生了长时间运行的任务,并且您需要将数据返回到 Web 客户端,那么根据您目前所解释的内容,异步 HTTP 请求是一种合法的架构。

如果处理被阻止,那么您的实施可能存在问题。或者,浏览器和客户端之间可能存在问题(代理服务器问题等),因此请检查这些类型的问题。

如果您完全需要另一个选项,那么 websockets 可能值得研究。

【讨论】:

  • 我异步工作,我的程序继续运行,但由于网络浏览器的资源限制,仍然无法处理更多请求。
  • 您提出了多少请求?预期响应的大小是多少?您是否向邮递员提出请求以确保在服务器端没有发生任何奇怪的事情?显示一些代码,也许有人可以帮助你。
  • @user693336 我发出大约 30 个请求,服务器需要几秒钟来“处理”每个请求,并且响应大小非常小。服务器需要时间是可以的,因为它很难计算,这不是我要解决的问题。问题是关于架构\设计 - 我的请求在服务器端需要花费大量时间,问题是要使用什么架构(显然 HTTP 请求不会这样做)。
  • 您的任务是否可以将数据推送到应用程序?另外,是否可以预先计算数据?
  • @YaaraZegelman - '但由于网络浏览器的资源限制,仍然无法处理更多请求' - 你遇到了什么错误?如果只有大约 30 个小请求,那么我不明白浏览器为什么会出现问题。如果没有任何错误的具体细节,我们完全一无所知。
猜你喜欢
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2021-02-09
  • 1970-01-01
相关资源
最近更新 更多