当前位置: 首页 > 知识库问答 >
问题:

javascript - 网络测速需要前端如何设计?

居英资
2024-01-11

问题背景:
我们研发的一款 app 需要测不同 bssid 的网速,来提示用户采用最佳速度的网络。

现在的实现方式:
1.前端先切换到对应的 bssid 网络上
2.后端提供了一个函数 speedTest,前端可以传递字节数,然后后端会创建相对应大小的垃圾数据返回给前端,后端 go 代码实现也比较简单。假设前端传递 100MB 的数据给后端。

func handleSpeedTest(c *gin.Context) {    sizeRaw := c.Query("size")    size, err := strconv.ParseInt(sizeRaw, 10, 64)    if err != nil {        c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("invalid size: %s", err)})        return    }    ctx := c.Request.Context()    c.Header("Content-Type", "application/octet-stream")    c.Header("Cache-Control", "no-cache")    const chunkSize = 256 * 1024    data := make([]byte, chunkSize)    for writtenSize := int64(0); writtenSize < size; writtenSize += chunkSize {        if size-writtenSize < chunkSize {            data = make([]byte, size-writtenSize)        }        select {        case <-ctx.Done():            return        default:            _, _ = c.Writer.Write(data)        }    }}
  1. 由于网络情况的特殊性,在网络较差的情况下,前端不可能等到 100MB 全部返回才提示用户,所以在前端做了一个超时处理,5s 之内取消这个请求,通过 5s 内接收到的数据除于/5s 得出网速。(使用 axios 和 new AbortController)

问题:
1.前端有能力主动取消请求,并且获得已经传输的数据吗?
2.前端这边如何去设计来达成需求呢?

共有1个答案

温翔宇
2024-01-11

这靠前端实现就行了吧,为什么需要后端参与

 类似资料:
  • 问题内容: 我想我很近。我将htaccess重定向到网站(前端/网络)和路径()。该网站看起来不错,正在加载CSS文件等。 如果您访问以下网址:http:// localhost / yii2app / -它会加载主页,并且不会在地址栏中重定向,但该页面会在所有URL中显示frontend / web。 如果您访问以下网址:http:// localhost / yii2app / admin-

  • 问题内容: 如何创建一个JavaScript页面来检测用户的互联网速度并将其显示在页面上?诸如 “您的互联网速度为?? / ??”之类的信息 Kb / s”。 问题答案: 可能在某种程度上但不是很准确,其想法是加载具有已知文件大小的图像,然后在其事件中测量触发该事件之前经过的时间,然后将此时间除以图像文件大小。 可以在这里找到示例:使用javascript计算速度 应用了建议的修复的测试用例: 与

  • 多益网络前端二面,问了半个小时场景题,后二十分钟一道算法,八股一道没考,崩不住了#前端##23届找工作求助阵地#

  • (全程20分钟) 自我介绍 react基础的问题比如react的有哪些常用hook,你是怎么自定义hook的 讲讲react fiber 讲讲组件怎么通信 讲讲你们以前项目的路由方式 图形学相关知识: 顶点着色器和片原着色器 模型有哪些格式 光照的类型 如何渲染贴图和纹理(API的调用) 补充:一个成熟的游戏引擎需要有哪些能量和功能?

  • 如何测本地电脑网卡速度,所在路由器速度,运营商限速度? 我只知道如何测实际使用速度,但不知道如何测各个位置的速度

  • 上午十一点,40min 实习项目中学习到什么,写了几个组件,项目中网络缓存如何配置的,难点是什么如何解决的,实习的技术选型有点奇怪,当时问了吗 前端中一般要求首屏资源加载(html、css、js)经过webpack打包后要求为14kb?为什么?  答:首屏响应时间不能过长,说这是表层原因,深层原因是啥???主要是tcp的慢启动算法,第一次连接的时候,不知道网络可以传输多少数据,一般就是10tcp数