Java 实现实时的web仪表板

Java 实现实时的web仪表板,java,ajax,real-time,dashboard,Java,Ajax,Real Time,Dashboard,我想实现一个基于web的仪表板,它有各种各样的指标,其中一个每分钟改变一次,另一个每天改变两次。如果发生更改,应通过AJAX尽快更新度量。这意味着同一页将运行至少几个小时 在Java世界中,处理这一问题的最有效方法(技术/实现方面)是什么?这里有两个明显的选择: :AJAX请求由服务器保持打开状态,直到几分钟后超时或发生更改(以先发生的为准)。这样做的缺点是处理许多连接可能很棘手;除此之外,您不需要常见的典型“每个请求一个线程,同步处理”模型 来自AJAX页面的频繁轮询,每个请求都会快速返回。

我想实现一个基于web的仪表板,它有各种各样的指标,其中一个每分钟改变一次,另一个每天改变两次。如果发生更改,应通过AJAX尽快更新度量。这意味着同一页将运行至少几个小时


在Java世界中,处理这一问题的最有效方法(技术/实现方面)是什么?

这里有两个明显的选择:

  • :AJAX请求由服务器保持打开状态,直到几分钟后超时或发生更改(以先发生的为准)。这样做的缺点是处理许多连接可能很棘手;除此之外,您不需要常见的典型“每个请求一个线程,同步处理”模型
  • 来自AJAX页面的频繁轮询,每个请求都会快速返回。这可能会更容易实现,但在网络方面效率较低(请求量大得多),且不太直接;例如,你可以每5秒钟发送一次请求,但是如果你有很多用户,你最终会有很多流量

最佳解决方案将取决于您拥有多少用户。如果只有几个客户机,那么您可能希望采用“每5秒轮询一次”的方法,或者甚至可能使用每个请求一个线程的长轮询(尽管这可能会稍微难以实现)。如果您有很多客户端,我肯定会选择长轮询,但您需要了解如何在特定的服务器环境中从连接中分离线程。

这里有两个明显的选项:

  • :AJAX请求由服务器保持打开状态,直到几分钟后超时或发生更改(以先发生的为准)。这样做的缺点是处理许多连接可能很棘手;除此之外,您不需要常见的典型“每个请求一个线程,同步处理”模型
  • 来自AJAX页面的频繁轮询,每个请求都会快速返回。这可能会更容易实现,但在网络方面效率较低(请求量大得多),且不太直接;例如,你可以每5秒钟发送一次请求,但是如果你有很多用户,你最终会有很多流量

最佳解决方案将取决于您拥有多少用户。如果只有几个客户机,那么您可能希望采用“每5秒轮询一次”的方法,或者甚至可能使用每个请求一个线程的长轮询(尽管这可能会稍微难以实现)。如果你有很多客户端,我肯定会选择长轮询,但你需要看看如何在特定的服务器环境中从连接中分离线程。

我认为Comet的时代已经过去了。全新的协议越来越受欢迎。我建议使用,它支持长轮询和websocket协议,客户端LIB也可用。

我认为Comet的时代已经过去了。全新的协议越来越受欢迎。我建议使用,它支持长轮询和websocket协议,客户LIB也可用。

我认为没有任何理由每五秒钟进行一次民意调查:指标每分钟只改变一次。每分钟一到两次简单的AJAX轮询就足够了。如果度量值恰好每分钟更改一次,请记录第一个请求上一次更新后的时间,然后后续请求可以与服务器端更新同步。@Gabriel:我假设“每分钟一次”是粗略的,而不是精确的。。。如果还有很多其他指标,你就不知道什么时候会发生。OP明确表示应“尽快”显示更改。但是,是的,很明显,如果你能延迟30秒,那会更有效率。我不认为有任何理由每5秒进行一次民意调查:指标每分钟只改变一次。每分钟一到两次简单的AJAX轮询就足够了。如果度量值恰好每分钟更改一次,请记录第一个请求上一次更新后的时间,然后后续请求可以与服务器端更新同步。@Gabriel:我假设“每分钟一次”是粗略的,而不是精确的。。。如果还有很多其他指标,你就不知道什么时候会发生。OP明确表示应“尽快”显示更改。但是,是的,显然如果你能延迟30秒,那会更有效率。