Załóżmy, że mam następujący kod Java.Jak mogę renderować stronę FTL, powiedzmy z aktualizacjami?
get("/", (request, response) -> {
Map<String, Object> attributes = new HashMap<>();
//attributes.put("message", "Hello World!");
return new ModelAndView(attributes, "index.ftl");
}, new FreeMarkerEngine());
To od Sparka. Gdy przechodzę do localhost: numer_portu /, widzę renderowany index.ftl, który załóżmy (nie jest tutaj zakodowany) wyświetla dane z bazy danych dla tej aplikacji. Ale załóżmy, że chcę dynamicznie aktualizować index.ftl. Powiedzmy, że inny użytkownik zaktualizował bazę danych (nie kodowaną tutaj) z innej instancji aplikacji i chciałem wyświetlić nowe zmiany w pliku index.ftl na stronie pierwszego użytkownika. Jak to się stało bez konieczności ponownego renderowania stron?
Nie można po prostu mieć timer po stronie Java, który ściąga nowe dane co 10-20 milisekund. Byłoby to również ogromne marnowanie czasu połączenia. Czy kod Java może być pingowany w jakiś sposób, że baza danych została zaktualizowana? Jak słuchacz dla bazy danych?
Nie tylko jest to problem, ale w jaki sposób można przekazać nowo otrzymane dane do pliku index.ftl bez konieczności ponownego wysyłania?
Czy znaczy, że coś takiego [Server-Sent Events] (https : //developer.mozilla.org/en-US/docs/Web/API/Server-sent_events)? – UnholySheep
Lub alternatywnie [Websockets] (https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) (zgodnie z [ten samouczek] (https://sparktutorials.github.io/2015/11 /08/spark-websocket-chat.html)) – UnholySheep
@UnholySheep To jest dokładnie to, co mam na myśli, ale zamiast tego Java backend. W JavaScript AJAX jest drogą do zrobienia. Jak mam wysyłać żądania wysłane przez serwer w ramach Sparka? – user41912