有没有一种方法可以通过JavaScript模拟网络条件?

时间:2020-06-27 10:07:08

标签: javascript networking browser developer-tools

在Firefox的开发人员工具中,可以选择模拟条件,例如某些类型的移动数据连接。有没有一种方法可以通过JavaScript激活它,而无需用户打开开发者控制台?

1 个答案:

答案 0 :(得分:1)

根据您的用例,您可以选择

  1. 安装一个侦听“提取”事件的服务工作者,然后延迟调用event.respondWith(需要HTTPS);
  2. 在应用程序范围内拦截对fetch / XMLHttpRequest的调用以执行相同的操作(覆盖window.fetch和/或window.XMLHttpRequest)-请注意,这不会影响直接从HTML加载的图像/资源;
  3. 设置HTTP Cookie或标头,并在响应之前延迟服务器(延迟)(很多用户这样做可能会降低服务器并发性)

请注意,如果您想使用流式资源(例如,渐进式JPEG,HTML)来模仿这种行为,则最好的选择是服务工作者路由,您可以在其中直接构建ReadableStream(请参见此处的内容)一些灵感:https://developers.google.com/web/updates/2016/06/sw-readablestreams)。

对于实际的流式传输行为本身,我会考虑使用RxJs管道之类的东西,这将使您轻松引入延迟,任意停止等以模拟不同的网络条件。