2013-03-19 7 views
6

मेरे पास एक डेस्कटॉप क्लाइंट और सर्वर दोनों पक्ष जावा में लागू हैं। सर्वर पक्ष टोमकैट पर बैठता है।सर्वर प्रेषित घटनाओं के क्लाइंट पक्ष के जावा कार्यान्वयन की तलाश में है।

अब मैं सर्वर भेजे गए ईवेंट का उपयोग करके जांच करना चाहता हूं और जबकि टॉमकैट इसे सर्वर पर उपयोग करना संभव बनाता है, मुझे नहीं लगता कि मैं इसे क्लाइंट साइड से कैसे कर सकता हूं। सभी कार्यान्वयन जावास्क्रिप्ट का उपयोग करते हैं, जो ठीक है यदि आपका ग्राहक जावास्क्रिप्ट क्लाइंट है। मेरा नहीं है

तो, मेरा सवाल यह है - क्या एसएसई स्पेक के क्लाइंट साइड के जावा जावा कार्यान्वयन हैं?

+0

इस पर कोई विचार है? जर्सी एसएसई आपके लिए काम कर रहा है? क्या आप मेरी मदद कर सकते हैं ? http://stackoverflow.com/questions/23672354/server-side-event-not-firing-in-jersey-2-8-using-sse – Sadanand

उत्तर

5

मुझे एक ही समस्या थी और एक समाधान मिला। जर्सी एक SSE ग्राहक (मानक वितरण की अपनी ओर से नहीं है, आप भी जर्सी-मीडिया-SSE जार जो आप Maven भंडार में पा सकते हैं की जरूरत है।

public static void consumeEventStream(String url, Consumer consumer) throws Exception { 
    Client client = ClientBuilder.newBuilder().register(new SseFeature()).build(); 
    WebTarget target = client.target(url); 
    EventInput e = null; 
    while (true) { 
     Thread.sleep(1000); 
     if (e==null || e.isClosed()) { 
      // (re)connect 
      e = target.request().get(EventInput.class); 

      e.setChunkType("text/event-stream"); 
     } 

     final InboundEvent inboundEvent = e.read(); 
     if (inboundEvent == null) { 
      break; 
     } 
     else { 
      String data = inboundEvent.getData(); 
      // do something here - notify observers, parse json etc 
     } 

    } 
    System.out.println("connection closed"); 
} 

setChunkType के आह्वान के एक बग से निपटने के लिए है जर्सी में - यदि चार एन्कोडिंग सामग्री प्रकार का हिस्सा है, तो जर्सी घटना प्रकार को पहचान नहीं पाएगी। दूसरी ओर, spec और ब्राउज़र सामग्री प्रकार को सेट करने की अपेक्षा करते हैं। एसी। जिरा को यह हल किया गया है लेकिन है defintely अभी तक नवीनतम संस्करण में काम नहीं कर जर्सी-मीडिया-SSE-2.2.jar, यह भी https://java.net/jira/browse/JERSEY-2062 देखते हैं।

आशा इस मदद करता है, जेन्स

+0

कृपया – Sadanand

+0

से ऊपर की एमए टिप्पणी की जांच करें जर्सी में कुछ इवेंटसोर्स क्लास भी छिपाने के लिए है आंतरिक और async प्रसंस्करण: https://jersey.java.net/documentation/latest/sse.html#d0e11876 – mikemachado

+0

यह काम किया। दस्तावेज़ के लिए धन्यवाद। – thangdc94

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