मूल रूप से, आप इस लेखन के समय में 3 विकल्प हैं:
WebSockets
WebSockets एक हल्के मैसेजिंग प्रोटोकॉल टीसीपी का इस्तेमाल करता है, बल्कि TCP सॉकेट की एक Javascript क्रियान्वयन से, आप जैसी है ' मैंने देखा हालांकि, शुरुआती हैंडशेक से परे, उस बिंदु से परे कोई HTTP शीर्षलेख पारित नहीं किया जा रहा है। एक बार कनेक्शन स्थापित होने के बाद, डेटा कम से कम ओवरहेड के साथ स्वतंत्र रूप से गुजरता है।
लंबी मतदान
लंबी मतदान, संक्षेप में, ग्राहक मतदान नई जानकारी के लिए सर्वर समय-समय पर HTTP अनुरोध के साथ शामिल है। यह सीपीयू और बैंडविड्थ के मामले में बेहद महंगा है, क्योंकि आप हर बार एक भारी नया HTTP शीर्षलेख भेज रहे हैं। पुराने ब्राउज़र के लिए यह अनिवार्य रूप से आपका एकमात्र विकल्प है, और Socket.io जैसे पुस्तकालय इन मामलों में फॉलबैक के रूप में लंबे मतदान का उपयोग करते हैं।
WebRTC
क्या पहले से ही उल्लेख किया गया है के अलावा, WebRTC यूडीपी के माध्यम से संचार के लिए अनुमति देता है। गैर-वेब-आधारित वातावरण में यूडीपी का मल्टीप्लेयर गेम में लंबे समय से उपयोग किया जाता है क्योंकि इसकी कम ओवरहेड (टीसीपी के सापेक्ष), कम विलंबता और गैर-अवरुद्ध प्रकृति।
टीसीपी "गारंटी देता है" कि प्रत्येक पैकेट पहुंच जाएगा (विनाशकारी नेटवर्क विफलता के लिए सहेजें), और वे हमेशा भेजे गए क्रम में पहुंचेंगे। महत्वपूर्ण जानकारी के लिए यह बहुत अच्छा है जैसे स्कोर, हिट, चैट आदि।
यूडीपी, दूसरे हाथ पर, इस तरह के कोई गारंटी नहीं है। पैकेट किसी भी क्रम में आ सकते हैं, या बिल्कुल नहीं। यह वास्तव में उपयोगी होता है जब उच्च आवृत्ति पर भेजे जाने वाले कम महत्वपूर्ण डेटा की बात आती है, और जितनी जल्दी हो सके उतनी जल्दी पहुंचने की आवश्यकता होती है, जैसे प्लेयर की स्थिति या इनपुट। कारण यह है कि टीसीपी धाराओं को अवरुद्ध कर दिया जाता है यदि परिवहन के दौरान एक ही पैकेट में देरी हो जाती है, जिसके परिणामस्वरूप गेम राज्य अपडेट में बड़े अंतर होते हैं। यूडीपी के साथ, आप आसानी से पैकेट को अनदेखा कर सकते हैं जो देर से आते हैं (या बिल्कुल नहीं), और प्लेयर के लिए एक आसान अनुभव बनाते हुए आपको प्राप्त होने वाले अगले के साथ आगे बढ़ें।
इस लेखन के समय, वेबसाकेट शायद आपकी सबसे अच्छी शर्त है, हालांकि वेबआरटीसी गोद लेने का तेजी से विस्तार हो रहा है, और वास्तव में आपके गेम के साथ किए जाने तक बेहतर हो सकता है, इसलिए यह विचार करने के लिए कुछ है।
वास्तव में प्रत्येक संचरण में केवल दो बाइट ओवरहेड होते हैं। Http हैंडशेकिंग केवल तब होती है जब एक नई वेबस्केट खोलते हैं और जब तक ब्राउजर उस पृष्ठ पर रहता है तब तक आप वेबस्केट को तब तक खोल सकते हैं। –
हां, वे हैं। सॉकेट खोलने के लिए एक बार HTTP हैंडशेक किया जाता है। तो अगर आप एक संदेश के बाद सॉकेट बंद करते हैं तो ओवरहेड बड़ा होता है, और यदि आप सॉकेट को हमेशा के लिए खोलते हैं तो महत्वहीन होता है। – Raynos
हैंडशेकिंग प्रक्रिया इतनी जटिल क्यों है? जो मुझे याद है, उसे एक मुट्ठी भर तारों में पढ़ना चाहिए, जिसमें से अंतिम कुछ [यादृच्छिक?] वर्णों का संग्रह है जो किसी भी तरह से बेस 64 एन्कोड किया जाना चाहिए और क्लाइंट को वापस भेजना चाहिए। मैंने सर्वर-साइड हैंडशेकिंग कोड खुद को लिखने की कोशिश की, लेकिन यह काम नहीं किया (हैंडशेकिंग प्रक्रिया कभी पूरा नहीं हुई, इसलिए मैं कभी भी अपने पैकेट भेजने और पुनर्प्राप्त करने में सक्षम नहीं था)। जावा पैकेज का उपयोग करते समय मैं एक ही सटीक परिणाम तक पहुंच गया था और किसी और ने एक ही काम करने के लिए लिखा था। – Josh1billion