SparkJava网站的动态更新

SparkJava网站的动态更新

问题描述:

我开发了一个具有Spark名气的web应用程序。在我希望启用动态内容加载的网站之一上。我的意思是,在Java中控制器我搜索服务器的一些信息,我想更新网站时,搜索完成后,如:SparkJava网站的动态更新

// 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类中完成。无论如何,WebSockets是否是正确的方法?

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

Tha Java代码如上所述,再加上onModuleFound方法我更新了存储在我的控制器类中的模块的静态列表(不作为getModules方法中的变量)。

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

不知道这是否是最好的解决方案,但它对我来说工作起来还算不错。