2015-07-30 18 views
29

के लिए websockets और लंबे मतदान के बीच मतभेद मैं एक आईओएस गेम के लिए एक सर्वर लिख रहा हूँ। गेम बारी आधारित है और क्लाइंट को सूचना को धक्का देने के लिए सर्वर को केवल एक बार प्रतिद्वंद्वी के कदम की सूचना देना है।बारी आधारित गेम सर्वर

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

इसके अतिरिक्त, यदि वेब पेज बनाने में दिलचस्पी है तो वेबसाइकिल और लंबे मतदान के बीच विचार करने के लिए अतिरिक्त कुछ भी है?

+3

तुम भी पुश सूचनाएं इस्तेमाल कर सकते हैं नए डेटा के ग्राहक को सूचित करने के। मैं आपके दो समाधानों की तुलना में अधिक कुशल (बैटरी वार) होने का मानना ​​चाहता हूं। – pteofil

+1

यदि उपयोगकर्ता अभी भी ऐप में था तो वह कैसे काम करेगा? – acidic

+2

जब आपको पुश अधिसूचना भी मिलती है तो आपको ऐप में अधिसूचित किया जाता है। – pteofil

उत्तर

73

लंबे मतदान क्या है?

enter image description here परंपरागत मतदान तकनीक का एक परिवर्तन और एक ग्राहक के लिए एक सर्वर से एक जानकारी धक्का का अनुकरण अनुमति देता है। लंबे मतदान के साथ, ग्राहक सामान्य मतदान के लिए सर्वर से जानकारी का अनुरोध करता है।

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

    वेब/AJAX संदर्भ में, लंबे मतदान को धूमकेतु प्रोग्रामिंग के रूप में भी जाना जाता है।

क्या WebSockets के बारे में?

enter image description here WebSockets एक क्लाइंट और सर्वर है कि दोनों दलों के किसी भी समय डेटा भेजने शुरू करने के लिए उपयोग कर सकते हैं के बीच एक सतत संबंध प्रदान करते हैं।

  • क्लाइंट वेबस्केट हैंडशेक के रूप में नामक प्रक्रिया के माध्यम से वेबस्केट कनेक्शन स्थापित करता है। यह प्रक्रिया क्लाइंट सर्वर से नियमित HTTP अनुरोध भेजने के साथ शुरू होती है।
  • इस अनुरोध में एक अपग्रेड हेडर शामिल है जो सर्वर को सूचित करता है कि ग्राहक वेबस्केट कनेक्शन स्थापित करना चाहता है।

निष्कर्ष:

तो वास्तविक समय संचार के एक की जरूरत आप बहुत अच्छी तरह से WebSockets के लिए विकल्प चुन सकते हैं नहीं है।

लेकिन लांग मतदान में:

एक कनेक्शन वेब ग्राहक और वेब सर्वर के बीच खुला आयोजित किया जाता है इतना है कि यह ग्राहक को धक्का कर सकते हैं जब सर्वर नई जानकारी नहीं है। वह अनुरोध तब समाप्त हो गया है। क्लाइंट और सर्वर के बीच एक नया अनुरोध किया जाता है और फिर सर्वर से दूसरे अपडेट की प्रतीक्षा करें। HTTP/1.1 Keep-alives के कारण एक ही टीसीपी कनेक्शन आमतौर पर एकाधिक अनुरोधों में लगातार खुला रहता है।

संदर्भ और अन्य कारणों:

PubNub long polling vs sockets - mobile battery life

What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet?

long polling in objective-C

Websocket Introduction

Websocket Vs Long Polling

Using Websockets in Apps

Websocket Application

PushTechnology-Long Polling

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