2015-02-19 12 views
13

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

धन्यवाद!

+0

ऑपरेशन की गति पूरी तरह से सर्वर पर निर्भर करेगी। एकमात्र जवाब दोनों को आजमाएं और देखें कि आपके आवेदन के लिए सबसे अच्छा क्या काम करता है। –

+2

मुझे नहीं पता कि लोग इसे "राय-आधारित" के रूप में बंद करने के लिए क्यों मतदान कर रहे हैं। अच्छे, तार्किक तथ्य-आधारित कारण हैं कि रीस्ट का उपयोग कर अजाक्स कॉल की तुलना में क्लाइंट को रीयल-टाइम डेटा देने के लिए वेबसॉकेट बेहतर विकल्प क्यों है। यह बिल्कुल राय नहीं है - वास्तव में यह बहुत अधिक है कि क्यों वेबस्केट को इस समस्या को बेहतर बनाने/हल करने के लिए अजाक्स कॉल से बेहतर बनाया गया था। बी के मुकाबले बेहतर है, बी के मुकाबले सभी प्रश्न मुख्य रूप से राय-आधारित नहीं हैं। कई तथ्यों, तर्क और संदर्भों के साथ उत्तर दिया जा सकता है जो मुख्य रूप से राय नहीं हैं। – jfriend00

+12

फिर से खोलने के लिए वोटिंग। इस सवाल का उत्तर "मुख्य रूप से एक राय-आधारित उत्तर" के उत्तर के बिना दिया जा सकता है। यहां कुछ लोग कुछ ऐसा बंद करने की कोशिश करने के लिए बहुत जल्दी हैं जो पूछता है कि ए बी को समझने के बिना बेहतर है कि क्या उत्तर केवल राय के बजाय तथ्यों, तर्क और संदर्भ के साथ प्रदान किया जा सकता है या नहीं। नीचे दिए गए एक उत्तर को देखें और खुद से पूछें कि क्या वह उत्तर "मुख्य रूप से राय" है। मुझे नहीं लगता। यह तथ्यों पर आधारित है, यह समझने के लिए कि कैसे दो विकल्प काम करते हैं और किस बारे में पूछे जाने वाले समस्या पर उन्हें लागू किया जा सकता है। – jfriend00

उत्तर

22

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

क्लाइंट लगातार नए मूल्य परिवर्तन के लिए पूछताछ करने और क्लाइंट को नई जानकारी मिलने पर समय के साथ यह अधिक कुशल हो सकता है।

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

एक वेबसाकेट आपके नेटवर्किंग आधारभूत संरचना पर भी तेज़ और आसान हो सकता है क्योंकि कम से कम नेटवर्क ऑपरेशंस पहले से ही खुले वेबसाकेट कनेक्शन पर एक पैकेट भेजने के लिए शामिल हैं, प्रत्येक आरईएसटी/अजाक्स कॉल के लिए एक नया कनेक्शन बनाकर, नया डेटा भेजना, फिर कनेक्शन बंद कर दिया। आपके विशेष एप्लिकेशन में इससे कितना अंतर/सुधार होता है, वह वास्तव में कुछ जानने के लिए आपको मापना होगा।

लेकिन, वेबसाकेट को आपके विशिष्ट परिदृश्य में मदद करने के लिए डिज़ाइन किया गया था, जहां क्लाइंट सर्वर पर कुछ बदलाव करते समय जानना चाहता है (वास्तविक समय के रूप में वास्तविक समय के करीब) तो मुझे निश्चित रूप से लगता है कि यह पसंदीदा डिजाइन पैटर्न होगा इस प्रकार के उपयोग के लिए।


यहाँ नेटवर्किंग से REST कॉल बनाने बनाम एक पहले से ही खुला WebSocket से अधिक मूल्य में बदलाव को भेजने में शामिल संचालन की तुलना की गई।

WebSocket

  1. सर्वर देखता है कि एक मूल्य बदल गया है और तुरंत प्रत्येक ग्राहक के लिए एक संदेश भेजता है।
  2. ग्राहक को नई कीमत के बारे में संदेश प्राप्त होता है।

आराम/अजाक्स

  1. ग्राहक एक मतदान अंतराल
  2. अगले मतदान अंतराल ट्रिगर पर सेट, क्लाइंट सर्वर को सॉकेट कनेक्शन बन
  3. सर्वर नई सॉकेट खोलने के लिए अनुरोध प्राप्त
  4. जब सर्वर के साथ कनेक्शन बनाया जाता है, क्लाइंट सर्वर पर नई मूल्य निर्धारण जानकारी के लिए अनुरोध भेजता है
  5. सर्वर को नई कीमत जानकारी के लिए अनुरोध प्राप्त होता है और नए डेटा (यदि कोई हो) के साथ जवाब भेजता है।
  6. ग्राहक नई मूल्य निर्धारण डेटा
  7. ग्राहक बंद कर देता है सॉकेट
  8. सर्वर पास

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

यदि मूल्य निर्धारण जानकारी अक्सर सुपर नहीं बदलती है, तो आरईएसटी/अजाक्स परिदृश्य में अक्सर "डू-कुछ नहीं" कॉल भी होंगे जहां ग्राहक अद्यतन का अनुरोध करता है, लेकिन कोई नया डेटा नहीं है। वेबसॉकेट मामले में कभी भी वह अपमानजनक मामला नहीं है क्योंकि सर्वर उपलब्ध होने पर नया डेटा भेजता है।

+0

बहुत बहुत धन्यवाद, यह वास्तव में मदद करता है! –

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