【问题标题】:Dynamically updating graphs on a Java based website在基于 Java 的网站上动态更新图表
【发布时间】:2014-11-06 06:02:44
【问题描述】:

我目前正在在端口 8080 上设置一个基于 localhost 的 Web 应用程序。这个应用程序与我的 Java 服务器应用程序一起提供,用于显示与服务器相关的统计信息。我目前正在使用一个基本的 Java GUI 来显示服务器的统计信息,但是我想通过网络以可视化的数据表示形式访问它。

我将使用的图表如下:

  • 甜甜圈图表
  • 填充折线图

图表显示的信息需要每秒更新一次。这些图表将显示的信息包括服务器当前网络 I/O、当前 RAM 使用情况、当前 CPU 使用情况、服务器运行的线程数量、线程处理时间、等等。

如前所述,我已经将所有这些信息以基于文本的格式发送到 GUI。

我在查看图表 API 时遇到的最多的问题是,它们都调用了另一个网站(例如 google chart API),然后它生成了一个图像,然后显示了这个图像。如果您的互联网连接甚至可以远程跟上,那么每秒执行一次会破坏您的带宽。

我个人想到的唯一解决方案是创建一个系统,在该系统中绘制图表布局,然后让网站“连接点”图表上的点。那么我只需要更新图形上的点,然后再次调用draw函数,但是有两个问题。

  1. 我不知道该怎么做。
  2. 我不确定此方法是否会比 google chart API 方法处理得更好。

我知道这是可能的,因为(竞争)SmartFoxServer 等应用程序使用它。示例图片:

【问题讨论】:

    标签: java javascript ajax html


    【解决方案1】:

    您可以轻松地为此使用一些开源 JS 图表库。不错的选择:http://www.chartjs.org/http://www.flotcharts.org/http://dygraphs.com/

    您从服务器获取数据,即带有 AJAX 请求的 JSON 格式(5 秒周期?)并将其提供给图表库。您可以使用 websockets 从服务器触发更新,但这有点困难。

    【讨论】:

    • 图表需要每秒更新一次,这对每秒生成一次 JSON 文件的 IO 来说不是很费力吗?此外,虽然这将负责在呈现图形时向图形提供新信息,但当用户仍在页面上时呢?图表需要实时更新。
    • 好吧,你必须在服务器上合理地聚合/过滤你的数据。显然,您不想每 5 秒向浏览器发送 1 GB 的数据,但是 1kB 的数据绝对没问题,对于您的图表来说应该足够了。在服务器上生成 JSON 非常快,您不必担心。
    • "生成 JSON 文件" 为什么要将它生成到文件中?当您收到 AJAX 请求时发送它作为响应。
    • 当我下班回来时,我会考虑通过 Java servlet 发送基于 JSON 的 AJAX(在此情况下分别称为 AJAJ,对吗?)。我会查看库,看看我能完成什么,感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多