2011-05-11 14 views
24

यहां पर कैननिकल उदाहरण ट्विटर का एपीआई है। मैं अवधारणा को समझता हूं कि आरईएसटी एपीआई कैसे काम करता है, अनिवार्य रूप से यह सिर्फ आपके सर्वर के लिए एक विशेष अनुरोध है जिसमें आपको एक प्रतिक्रिया (JSON, XML, आदि) प्राप्त होता है।स्ट्रीमिंग एपीआई बनाम बाकी एपीआई?

हालांकि मुझे बिल्कुल यकीन नहीं है कि स्ट्रीमिंग एपीआई दृश्यों के पीछे कैसे काम करता है। मैं समझता हूं कि इसका उपभोग कैसे करें। उदाहरण के लिए ट्विटर के साथ एक प्रतिक्रिया के लिए सुनो। प्रतिक्रिया से डेटा के लिए सुनो और जिसमें ट्वीट्स में चक्कर आते हैं। एक स्ट्रिंग बफर में भाग बनाएं और एक लाइन फीड की प्रतीक्षा करें जो ट्वीट के अंत का प्रतीक है। लेकिन वे यह काम करने के लिए क्या कर रहे हैं?

मान लें कि मेरे पास डेटा का एक समूह था और मैं नेट पर अन्य लोगों के लिए स्थानीय रूप से एक स्ट्रीमिंग एपीआई स्थापित करना चाहता था (जैसे ट्विटर की तरह)। यह कैसे किया जाता है, क्या तकनीकें? क्या यह कुछ नोड जेएस संभाल सकता है? मैं सिर्फ इस काम को काम करने के लिए अपने काम को लपेटने की कोशिश कर रहा हूं।

उत्तर

19

ट्विटर की स्ट्रीम एपीआई यह है कि यह अनिवार्य रूप से एक लंबे समय से चलने वाला अनुरोध है जो खुला रहता है, जब डेटा उपलब्ध हो जाता है तब डेटा को धक्का दिया जाता है।

इसका पुनरावृत्ति यह है कि सर्वर को समवर्ती खुले HTTP कनेक्शन (प्रति ग्राहक एक) के साथ सौदा करने में सक्षम होना होगा। बहुत से मौजूदा सर्वर उस अच्छी तरह से प्रबंधित नहीं करते हैं, उदाहरण के लिए जावा सर्वलेट इंजन प्रति थ्रेड एक थ्रेड असाइन करते हैं जो (ए) काफी महंगा हो सकता है और (बी) सामान्य अधिकतम थ्रेड सेटिंग को तुरंत हिट करता है और बाद के कनेक्शन को रोकता है।

जैसा कि आपने अनुमान लगाया है कि नोड.जेएस मॉडल स्ट्रीमिंग कनेक्शन के विचार को एक सर्वलेट मॉडल कहने से काफी बेहतर बनाता है। दोनों अनुरोध और प्रतिक्रियाओं को नोड.जेएस में धाराओं के रूप में उजागर किया जाता है, लेकिन पूरे धागे या प्रक्रिया पर कब्जा नहीं करते हैं, जिसका अर्थ है कि आप स्ट्रीम में डेटा को तब तक धक्का दे सकते हैं जब तक कि यह अत्यधिक संसाधनों को बगैर खुला रहता है (हालांकि यह व्यक्तिपरक है)। सिद्धांत रूप में आप एक ही प्रक्रिया से जुड़े कई समवर्ती खुले प्रतिक्रियाएं प्राप्त कर सकते हैं और आवश्यक होने पर केवल प्रत्येक को लिख सकते हैं।

यदि आपने इसे पहले से नहीं देखा है तो HTTP docs for Node.js उपयोगी हो सकता है।

मैं यह देखने के लिए technoweenie's Twitter client पर भी एक नज़र डालने के लिए देखता हूं कि उस एपीआई का उपभोक्ता अंत नोड.जेएस, the stream() function in particular जैसा दिखता है।

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