javascript - 有没有办法从 JavaScript 模拟网络条件?
问题描述
在 Firefox 的开发者工具中,可以选择模拟某些类型的移动数据连接等条件。有没有办法从 JavaScript 激活它,而不需要用户打开开发者控制台?
解决方案
根据您的用例,您可以
- 安装一个监听“fetch”事件的服务工作者,然后
event.respondWith
延迟调用(需要 HTTPS); - 在应用程序范围内拦截对 fetch / XMLHttpRequest 的调用以执行相同的操作(覆盖
window.fetch
和/或window.XMLHttpRequest
) - 请注意,这不会影响直接从 HTML 加载的图像/资源; - 设置 HTTP cookie 或标头并在响应之前使您的服务器/延迟(但是,许多用户这样做可能会降低服务器并发性)
请注意,如果您想使用流式资源(例如渐进式 JPEG、HTML)来模拟这种行为,最好的选择是 service worker 路由,您可以在其中ReadableStream
直接构建一个(请参阅此处获取一些灵感:https://developers .google.com/web/updates/2016/06/sw-readablestreams)。
对于实际的流媒体行为本身,我会考虑使用 RxJs 管道之类的东西,它可以让您轻松引入延迟、任意停止等来模拟不同的网络条件。
推荐阅读
- c# - 点击 Geckofx 网络浏览器内的链接将触发 Winforms 中的方法
- android - Android WebView:手机锁定时音频断断续续
- python - 如何比较列表的两个元素以找到最低价格?
- php - 我网站上的这个 PHP 代码有什么作用?
- asp.net - 单击一个 asp:hyperlink 控件将所有 asp:hyperlinks 更改为访问的颜色
- node.js - Heroku 和 NameCheap 上的 API 服务器
- java - 给定 2 个字符串和整数 k,以 k 步将一个字符串转换为另一个字符串
- python - 在 matplotlib 的子图中使用 xscale 和 yscale
- java - 为什么我的 JAR 的 Maven 依赖项没有包含在我的 WAR 中?
- python - 带有XGBoost的Cox PH模型,如何获得生存时间?