【问题标题】:How to detect nearest server to test latency/ping speed using Javascript?如何检测最近的服务器以使用 Javascript 测试延迟/ping 速度?
【发布时间】:2013-06-06 07:18:12
【问题描述】:

我正在实现一个浏览器扩展,它应该连接到最近的服务器以测试 ping 速度。

要了解更多详情,请查看SpeedTest,它首先计算 ping 时间。
为了计算这个 ping 时间,它会检测最近的服务器,然后 ping 它。

例如,这是SpeedTest 检测到的最近的服务器。我用红色箭头标记了它们


SpeedTest 如何检测这些服务器?

即如何像 SpeedTest 那样在 javascript 中检测最近的服务器及其位置?

【问题讨论】:

  • 我发现了一些 geoip 库,它们具有一些有用的功能,例如根据您的 ip 检测您的地理位置,例如maxmind.com/en/web_services,但我在文档中没有找到任何获取服务器列表的功能(ip/long/lat),顺便说一句,我不确定我在调查中是否走对了路:)
  • 该信息很可能是预先计算的,当然也可能不是在客户端实时计算的。如果这是在运行时计算的,它几乎肯定会在服务器上完成,而不是在客户端 js 中
  • 你完全正确。这就是为什么我正在寻找一个网络服务来这样做,以便我可以在 JS 中连接到它。但我没找到

标签: javascript ping latency geoip speed-test


【解决方案1】:

从让客户端计算机运行 ping 操作的意义上说,speedtest 所做的并不是真正的“ping”。我不知道他们的确切方法(而且我相信他们使用 flash 而不是纯 JS,或者至少曾经使用过),但我猜他们试图访问每个资源(一个空的文本/图像文件?)这些机器,然后时间响应回来。无论如何,这肯定是一种实现方式。

【讨论】:

  • 是的,你是对的,他们只是多次连接到一个简单的txt文件,使用这个urlspeedtest1.linkdsl.com/speedtest/latency.txt?x=1370874660967,你可能已经注意到了,他们首先检测到speedtest1.linkdsl.com服务器的存在.其中 linkdsl 是埃及的一个 ISP(离我最近的一个)。我也在尝试获取最近的服务器,我也想知道这些服务器是否作为 testspeed 的私有服务器分布在世界各地!??有没有我可以连接到的服务来让最近的服务器回到我身边?
  • 看起来他们实际上是私人服务器:support.speedtest.net/entries/…
  • 标记为您最后一条评论的答案,其中包含解决方案(即获取分布在世界各地的私人服务器)。
  • 我在 Stack Overflow 中看到过类似问题的一些答案,指出客户端发送 HTTP HEAD 请求来测量 ping 速度,这是有道理的
猜你喜欢
  • 2011-02-01
  • 2018-09-19
  • 2015-11-03
  • 2011-02-15
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2012-03-09
  • 2011-02-23
相关资源
最近更新 更多