【问题标题】:How can I "ping" the user in JavaScript?如何在 JavaScript 中“ping”用户?
【发布时间】:2014-07-10 05:08:01
【问题描述】:

我需要获取客户端到达服务器的请求时间,反之亦然。 所以我已经能够在 Python 中做到这一点,这对我现在在网页上没有帮助。

听说可以使用Ajax,是这样吗?

如果是这样,你能给我一些细节或信息,我应该从哪里开始?

谢谢,期待解答!

【问题讨论】:

标签: javascript ajax xml ping


【解决方案1】:

您可以通过 http 模拟 ping,但这不是很准确。一种简单的方法是以 ms 或 ns 为单位发布当前时间戳,然后等待同一时间的响应。实际时间和响应时间之间的差异就是所谓的往返时间 (RTT)。如果你将它除以 2,你会得到 ping 的响应时间。

【讨论】:

  • “发布当前时间戳”是什么意思,这是可以使用 Ajax 完成的吗?
  • 在客户端你知道客户端的时间。只要不是所有时钟都同步,您只需使用客户端的时间。
  • 我怎么知道他的加载时间?
  • 1.您将当前时间发布到服务器。 2. 服务器尽可能快地响应该时间返回给客户端。 3.客户端比较响应的初始时间和当前时间之间的时间。 4.区别在于RTT。如果您将 RTT 除以 2,您将获得响应时间,也就是 ping。
【解决方案2】:

在较新的浏览器上,您可以使用navigation timing API (HTML5 rocks article on navigation timing) 来详细了解加载页面所需的时间。您可以简单地从“performance.timing”中减去相关字段以获得您感兴趣的时间。(secureConnectionStart - connectStart)(connectEnd - connectStart),取决于连接是否为 SSL 连接,看起来是 ping 时间的合理近似值(不过,正如 rekire@ 指出的那样,如果您试图衡量最终用户对您的网站的整体用户可见延迟,您可能希望包括的不仅仅是这些)。

【讨论】:

  • 我可以用什么语言进行编程?阿贾克斯? html5?
  • @user2634624 这是一个 JavaScript API。 Ajax 是一种特殊的技术,而不是一种编程语言(它通常指的是 JavaScript,但它也适用于编译成 JavaScript 的客户端语言,如 Dart)。 HTML5 是一个有点模糊的术语,从最宽松的意义上说,它包含了 HTML、JavaScript 和 CSS 中的各种功能。然而,Ajax 早于 HTML5。
【解决方案3】:

供您参考,ajax ping 的工作方式如下。 不幸的是,您很可能会被域策略阻止并且永远不会成功。

function ping(){
   $.ajax({
      url: 'http://website.com',
      success: function(result){
         alert('replied');
      },     
      error: function(result){
          alert('error');
      }
   });

请参阅this code 作为您尝试做的看似成功实施的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2019-07-15
    • 2011-06-24
    • 2018-07-29
    • 2020-08-25
    • 2016-12-10
    • 2021-10-24
    • 2010-12-16
    相关资源
    最近更新 更多