angular - 如何计算 Angular 中的下载/上传互联网速度

标签 angular

我想在 Angular 中计算下载和上传互联网速度。

向 API 请求不会是最好的解决方案,因为如果服务器本身因负载而变慢,结果将是不正确的。

也许有 Angular 的解决方案,为此使用特殊的站点(例如 speedtest.net)。

有什么想法吗?

最佳答案

网速是多少?

每个人都希望下载速度越来越快,上传文件的速度也越来越快。但是这是什么意思?当你下载或上传一些东西时,你和服务器正在以一种特定的方式进行通信。你们都有互联网连接,但在大多数情况下,你的速度比服务器的连接慢。要理解这一点,只需遵循以下逻辑:

您正在与其他数千名用户玩一些视频游戏。您的(和其他玩家连接)每秒可以发送和接收 20 个单位。服务器每秒最多可以发送 200 万个单位。这样大家都开心,都在线。如果服务器每秒只能发送 20 个单位,那么每个人都会滞后,甚至更糟(比如包丢失)。

因此,要回答什么是互联网速度,是指从向您发送请求到传输到服务器、获得响应,然后将其返回给您所花费的时间。当然,如果服务器出现故障或已用完他的单元空间以供您使用,您的请求将会延迟,但这就是互联网的工作方式。

当您下载或流式传输电影时,会发生同样的事情:每次完成下载/流式传输一小部分时,您都会请求新的 block 。

让我们谈谈一些数字

在互联网上,时间是以毫秒计算的。如果你只是打开一个终端并做一个简单的 ping www.stackoverflow.com 你会得到类似的东西:

Reply from 151.101.1.69: bytes=32 time=36ms TTL=56
Reply from 151.101.1.69: bytes=32 time=36ms TTL=56
Reply from 151.101.1.69: bytes=32 time=36ms TTL=56
Reply from 151.101.1.69: bytes=32 time=36ms TTL=56

time=36ms 是您发送 ping 请求与请求返回给您之间耗时。

最后

我希望已经清除了一切,测量时间,在网络中,是这样的:

- Start counting
- Send a request
- ... 
- Wait..
- ...
- Request turned back
- Stop Counting

** 但我的问题是:我可以用 Angular 来做吗?**

答案是..有点。可能有更好的方法来做到这一点,但几个月前我也想这样做,于是我想出了这个主意。

假设我们有一个服务可以发出请求:

export class MyService{
  constructor(
    private http: Http
  )

  public sendRequest(){
    return this.http.get(...something);
  }
}

我们的主要组件将进行服务注入(inject)并计算通过的次数:

export class MyComponent{
  public timePassed: any;

  constructor(
    private service: MyService
  )

  ngOnInit(): void{
    const startingTime = new Date().getTime();

    this.service.sendRequest()
    .subscribe( res => {
         this.timePassed = ((new Date() - startingTime).getTime())/1000;
    });
  }
}

现在在您的 timePassed 变量中,您将获得请求所花费的时间。 正如我所说,由于您的连接速度慢或服务器的连接速度慢,时间可能会发生变化。

您始终必须像两个人互相交谈一样以互联网速度思考。总是。 如果您不能将自己的速度与其他人的速度联系起来,那么谈论速度就毫无意义。

关于angular - 如何计算 Angular 中的下载/上传互联网速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52171690/

相关文章:

javascript - Angular 2 + SignalR - 从外部脚本访问 Angular 内部

angular - 如何在 TypeScript 中正确使用 GeolocationPosition?

angular - 我可以将 Typescript 与 Angular 2.0 结合使用,还是应该使用 Traceur?

angular - 错误 : Can't resolve 'core-js/es7/reflect' in '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models

java - 在 spring boot 2.0.5 中将具有不同数据类型的图像从 Angular 7 发送到 Rest API

java - 如何从 Angular 应用程序打开桌面应用程序?

javascript - NodeJS, Angular 2 |接下来在 Observable 上执行方法

html - 如何从文本区域的文本输入中删除下划线?

javascript - 如何开始使用 html2canvas

javascript - typescript 滚动位置