2013-04-14 5 views
11

मेरे पास यह कार्य है कि मैं उपक्रम कर रहा हूं जहां मैं किसी डिवाइस से डेटा पढ़ रहा हूं और इसे वेब सेवा पर उपलब्ध कराऊंगा। डेटा एक सेकंड में 4 बार पढ़ा जाता है। मैं चाहता हूं कि वेब क्लाइंट एक खुले HTTP कनेक्शन के लिए हों और chunked transfer का उपयोग कर स्ट्रीम के रूप में डिवाइस रीडिंग प्राप्त करें जब तक कि ग्राहक कनेक्शन को खुला रखे।स्ट्रीमिंग डेटा को रीसेट करें

अवधारणा के सबूत के रूप में, मैं एक ऐसी सेवा शुरू करना चाहता हूं जो लगातार यादृच्छिक संख्या उत्पन्न करे, 4 बार एक सेकंड, जेसन में इसे लपेटें और ग्राहकों को स्ट्रीम करें। मैं twitter streaming api.

पर आधारित इसे मॉडल करने की कोशिश कर रहा हूं, मैं उस webservice को बनाने के लिए restlet 2.1.2 का उपयोग कर रहा हूं लेकिन मुझे यकीन नहीं है कि मुझे यह प्राप्त करने के लिए किस प्रतिनिधि का उपयोग करना चाहिए। मैंने इसकी खोज करने की कोशिश की लेकिन कुछ भी उपयोगी नहीं मिला। क्या कोई मुझे सही दिशा में इंगित कर सकता है कि मुझे क्या उपयोग करना चाहिए और शायद कुछ उदाहरण शायद।

धन्यवाद

+0

क्या आपका मतलब है कि प्रतिनिधित्व के उप-प्रकार का क्या उपयोग करना चाहिए? जेसन पुनरीक्षण एक होना चाहिए: http://restlet.org/learn/javadocs/snapshot/jse/ext/org/restlet/ext/json/JsonRepresentation.html इसके रचनाकारों में से एक आसान है: जेसन रिपोर्ट (मानचित्र <स्ट्रिंग , ऑब्जेक्ट> मानचित्र) –

+0

क्या आप रीस्टलेट करने के लिए बाध्य हैं? मुझे नहीं लगता कि यह बिना किसी [हैकिंग] के बिना बॉक्स के बाहर की आवश्यकता का समर्थन करता है (http://rfc2616.wordpress.com/2010/11/16/streaming-output-from-a-restlet-resource/)। एक वेब सेवा लाइब्रेरी है जो एसिंक/स्टीमिंग को नियंत्रित करती है - [वायुमंडल] (https://github.com/Atmosphere/atmosphere)। – pfyod

+0

@ डिएगोअल्कांटारा जेसनरिपेशन का उपयोग गतिशील सामग्री को स्ट्रीम करने के लिए नहीं किया जा सकता है, मुझे नहीं लगता। –

उत्तर

-1

मुझे लगता है कि इस लिंक आप मदद कर सकता है:

http://blog.newitfarmer.com/architecture/j2ee-architecture/835/restlet-implementing-post-with-json-receive-and-response-best-practice

+0

यह वह नहीं है जो उसने पूछा था। वह डेटा को _stream_ करना चाहता है, बस जेएसओएन को आउटपुट करना रीस्टलेट के साथ आसान है। – pfyod

+0

@pfyod ठीक है, मेरे बुरे। –

3

प्राप्त करने के लिए आपको बस इतना करना कोशिश कर रहे हैं, मैं WriterRepresentation का उपयोग करेंगे (लेकिन देखना मेरी answer to your other question), लेकिन मैं मुझे यकीन है कि आप गलत वास्तुशिल्प दिशा में जा रहे हैं।

दरअसल प्रलेखन से निम्न छवि आप लिंक किए गए

enter image description here

दिखाता है कि कैसे भी ट्विटर स्ट्रीमिंग एपीआई उपयोगकर्ताओं द्वारा जोड़ा जा करने का इरादा नहीं है, लेकिन पृष्ठभूमि प्रक्रियाओं है कि एक दुकान से सुलभ में संदेश डाउनलोड द्वारा HTTP उपयोगकर्ता केवल HTTP सर्वर को मतदान करते हैं, जो स्टोर से संदेशों को पढ़ता है और ग्राहकों को वापस भेजता है।

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

इस प्रकार, यदि आप HTTP प्रोटोकॉल से बंधे हैं, उपयोगकर्ता एजेंट को मतदान करना चाहिए। आप Last-Modified/If-Modified-Since या Etag/If-None-Match जैसे शीर्षकों के साथ नेटवर्क लोड को कम कर सकते हैं।

हालांकि, यदि आप एक अलग प्रोटोकॉल अपना सकते हैं, तो मैं दृढ़ता से सुझाव देता हूं कि एक कनेक्टेड टीसीपी प्रोटोकॉल पर सेवा बस का प्रयास करें।

+0

मेरे पास एक बहुत ही अनूठी आवश्यकता है और इसलिए मैं इस पथ से नीचे हूं। Webservice केवल प्रत्येक के पास 1 से 2 क्लाइंट कनेक्ट होंगे, और अधिकांश भाग के लिए केवल एक स्केलेबिलिटी चिंता का विषय नहीं है। –

+0

फिर भी, HTTP प्रॉक्सी एक समस्या बन सकती है। बीटीडब्ल्यू, आप वास्तव में क्या समस्या का सामना कर रहे हैं? विशेष रूप से, क्यों मतदान एक विकल्प नहीं है? –

+0

ऐसा लगता है, मैं पहले से मौजूद क्लाइंट के आसपास एक सर्वर बनाने की कोशिश कर रहा हूं। सर्वर जो अस्तित्व में था, एक अलग तकनीक का उपयोग करके लिखा गया था और मेरे पास यह देखने के लिए स्रोत आधार नहीं है कि इसे कैसे कार्यान्वित किया गया था। मतदान का उपयोग नहीं किया गया था क्योंकि कनेक्शन प्रतिष्ठान और समापन को ओवरहेड माना जाता था, लेकिन अब यह लूप किसी भी बेहतर साबित नहीं हो रहा है, लेकिन यह वही है और मैं यह देखने की कोशिश कर रहा हूं कि मैं रीसेट सेवा कार्य कर सकता हूं या नहीं। –

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