2016-10-15 7 views
6

मान लें कि मेरे पास निम्न जावा कोड है।मैं लगातार एफटीएल पेज कैसे प्रस्तुत करूं, अपडेट के साथ कहूंगा?

get("/", (request, response) -> { 
    Map<String, Object> attributes = new HashMap<>(); 

    //attributes.put("message", "Hello World!"); 

    return new ModelAndView(attributes, "index.ftl"); 
}, new FreeMarkerEngine()); 

स्पार्क से है। जब मैं लोकलहोस्ट पर नेविगेट करता हूं: पोर्टनंबर /, मैं index.ftl प्रस्तुत करता हूं, जो मानते हैं (यहां कोड नहीं किया गया है) इस ऐप के डेटाबेस से डेटा प्रदर्शित करता है। लेकिन मान लीजिए कि मैं index.ftl को गतिशील रूप से अपडेट करना चाहता हूं। आइए मान लें कि किसी अन्य उपयोगकर्ता ने एप्लिकेशन के किसी अन्य उदाहरण से डेटाबेस को अपडेट किया है (यहां कोड नहीं किया गया है), और मैं पहले उपयोगकर्ता के पेज पर index.ftl में नए बदलाव प्रदर्शित करना चाहता था। पृष्ठों को फिर से प्रस्तुत किए बिना यह कैसे किया जाएगा?

आप जावा पक्ष में बस एक टाइमर नहीं रख सकते जो हर 10-20 मिलीसेकंड के नए डेटा में खींचता है। यह कनेक्शन समय का भारी कचरा भी होगा। जावा कोड को किसी भी तरह से पिंग किया जा सकता है कि डेटाबेस अद्यतन किया गया है? डेटाबेस के लिए श्रोता की तरह?

न केवल एक समस्या है, लेकिन आप नए प्राप्त किए गए डेटा को index.ftl को फिर से प्रस्तुत किए बिना कैसे दबाएंगे?

+0

आप की तरह कुछ [सर्वर-से भेजे गए इवेंट] (मतलब है https भीतर ताज़ा कर सकता है : //developer.mozilla.org/en-US/docs/Web/API/Server-sent_events)? – UnholySheep

+0

या वैकल्पिक रूप से [Websockets] (https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) ([इस ट्यूटोरियल] के अनुसार (https://sparktutorials.github.io/2015/11 /08/spark-websocket-chat.html)) – UnholySheep

+0

@Unholyhehe यह बिल्कुल मेरा मतलब है, लेकिन इसके बजाय जावा बैकएंड के लिए। जावास्क्रिप्ट में, AJAX जाने का रास्ता है। मैं स्पार्क ढांचे में सर्वर से भेजे गए अनुरोध कैसे करूं? – user41912

उत्तर

1

आप कोमेट

का उपयोग कर ब्राउज़रों के लिए डेटा धक्का कर सकते हैं

कई अलग-अलग कोमेट तकनीक है कि आप प्रभाव को प्राप्त करने का उपयोग कर सकते हैं। मुझे बहुत comprehensive article मिला है और उनके बीच चयन करने के लिए उपयोगी है।


कोमेट रोजगार के बाद, आप utilize this trick जिससे कि आप केवल सामग्री एक <div> टैग


एक और reference

संबंधित मुद्दे