如何模拟Dart/Flutter的WebSocket、HttpClient和Socket的慢速/无网络连接?

6

我需要模拟慢速或无网络环境来测试Dart/Flutter的HttpClient和Socket。然而,我找不到任何关于网络方面的指南。

我的初步想法如下:我们可以创建一个 class SlowSocket implements Socket,并使用委托/装饰器设计模式。例如,SlowSocket.add 方法将被实现为 Future.delayed(...).then(() => realSocket.add())。不知道这种方法可行吗?或者有更简单/更好的方式吗?

感谢任何建议!


1
看看这个能否帮助你在使用Android模拟器进行测试时解决问题。https://dev59.com/FGw05IYBdhLWcg3wyk3n#25604490 - ibhavikmakwana
@ibhavikmakwana 谢谢,但是我也需要在原始的Dart上进行测试,所以不能使用那个模拟器。 - ch271828n
2个回答

1
一种方法是设置一个像Android模拟器一样内置该功能的虚拟机。否则,取决于您开发的平台,您可以使用模拟网络缓慢/无网络的工具(例如Windows)。如果您打开开发人员工具(Ctrl-Shift-I),Chrome也提供此功能。

谢谢,但我希望有一个轻量级的解决方案,因为我想持续运行测试。 - ch271828n

1

如果您正在使用Android Studio,我可以帮助您。

  1. 您可能需要打开AVD管理器enter image description here

  2. 点击“铅笔图标(编辑)”

    enter image description here

  3. 进入高级设置,然后在速度和延迟部分设置您选择的网络类型:

    enter image description here

参考速度(以增加kbps为单位):

                            UP       DOWN
                      -------- ----------
    gsm   GSM/CSD         14.4       14.4
    hscsd HSCSD           14.4       57.6
    gprs  GPRS            28.8       57.6
    umts  UMTS/3G        384.0      384.0
    edge  EDGE/EGPRS     473.6      473.6
    hsdpa HSDPA         5760.0   13,980.0
    lte   LTE         58,000.0  173,000.0
    evdo  EVDO        75,000.0  280,000.0
    full  No limit           ∞          ∞

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接