2011-01-07 10 views
5

मैं http:request(get, {Url, []}, [], [{sync, false}, {stream, self}]) का उपयोग कर http क्लाइंट erlang द्वारा कुछ सर्वर के लिए एसिंक्रोनस अनुरोध करता हूं, जहां Url सर्वर का यूआरएल है। सब ठीक है और पर कॉल करने वाले प्रक्रिया के gen_server में handle_info द्वारा डेटा प्राप्त होता है। लेकिन कनेक्ट होने पर मुझे संदेश प्राप्त होना चाहिए और stream_end संदेश नहीं मिला है। टाइमआउट का उपयोग करना मेरे लिए उपयोग योग्य नहीं है, क्योंकि सर्वर लंबे समय तक प्रतिक्रिया दे सकता है।एरलांग। असीमित HTTP अनुरोध। कनेक्शन कब टूटा हुआ है, तो कैसे पता चलेगा?

handle_info में टूटी हुई कनेक्ट के बारे में संदेश प्राप्त करना संभव है? यदि नहीं है, तो कृपया कनेक्ट करने का तरीका बताएं कि कनेक्ट कब टूटा हुआ है?

उत्तर

6

HTTP अनुरोधों की अधिक भारी उठाने के लिए, ibrowse का उपयोग करें:

https://github.com/cmullaparthi/ibrowse

यह मोड़ और अनुरोधों के लिए चालू करने के लिए कई और अधिक घुंडी है और अधिक संपूर्ण w.r.t. है बहुत सी बातें। यदि http/httpc आपकी समस्या का समाधान नहीं करता है, तो यह जांचने योग्य है कि इब्रासे में जाने पर क्या होगा।

+0

उत्तर के लिए धन्यवाद। मैंने पहले ibrowse का उपयोग करने की कोशिश की है। लेकिन, ऐसा लगता है, कुछ गलत हो जाता है। मैं ट्विटर स्ट्रीमिंग एपीआई के लिए क्लाइंट लिख रहा हूं और जब मैं इब्रोसे का उपयोग करता हूं तो मुझे कुछ भी नहीं मिलता है, उदाहरण के लिए - http://pastebin.com/fJNELWJE। जब मैं erlang http क्लाइंट का उपयोग करता हूं, तो सभी काम करता है। अर्थात। कई संदेश मिल गए हैं। –

+0

आपका उदाहरण रिकॉर्ड के लिए यहां काम करता है। –

+0

जब मैं ट्विटर से संदेश कैसे प्राप्त कर सकता हूं? .. क्योंकि मुझे यकीन है कि वे इसे कनेक्ट करने के बाद भेजते हैं। –

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