SparkJava网站动态更新

Dynamic update of SparkJava website

我用 Spark famework 开发了一个网络应用程序。在我想启用动态内容加载的网站之一。我的意思是,在 Java 控制器中,我在服务器中搜索一些信息,我想在搜索完成后更新网站,例如:

// this is called by get("/module", (req, resp)-> ...);
public static ModelAndView getModules(Request req, Response res) {
    Map<String, Object> model = new HashMap<String, Object>();

    List<Module> modules = new ArrayList<>();
    model.put("modules", modules);

    lookForModules(this);

    return new ModelAndView(model, "pathToSiteSource");
}

private lookForModules(Listener listener){
  // modules search in the background thread
  // when any module is found I inform the listener;
  // different modules can be found in various times
}

public void onModulesFound(List<Module> modules){
  // I want to update the site using the modules that I got
}

我读到 WebSockets 是一种可行的方法,但 Spark 网站上的 WebSockets 示例使用 AJAX 调用,我的搜索必须在我的 java class 中完成。无论如何,WebSockets 是执行此操作的正确方法吗?

我设法以某种方式解决了我的问题。

Tha Java 代码如上,加上 onModuleFound 方法我更新了我存储在我的控制器 class 中的静态模块列表(不是 getModules 方法).

然后在站点代码中我添加了 AJAX 调用,每三秒更新一次这个特定的 div。这导致调用 getModules,并将最新的模块列表设置到我站点的模型中。

不确定这是否是最佳解决方案,但对我来说效果很好。