我想在 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/