2013-09-24 12 views
5

मैं वेबआरटीसी और वेबसाइटों की दुनिया में नया हूं। मुझे 1 बनाम 1 वेब गेम बनाने में दिलचस्पी है। समस्याग्रस्त है बस: क्लाइंट से दूसरे क्लाइंट को सरल चर (मुख्य रूप से संख्या) कैसे भेजें?वेबआरटीसी की तुलना में वेबसाइकिल तेजी से?

मेरे पास websockets (socket.io के माध्यम से) के साथ एक नोड.जेएस सर्वर है।

  • WebSockets का उपयोग करना:: तो, ग्राहकों के लिए, मैं दो समाधान है ग्राहक 1 धक्का सर्वर से वर और सर्वर क्लाइंट 2. करने के लिए वर धक्का यह समाधान मुझे आसानी से अपने आवेदन अनुकूल करने के लिए अनुमति देते हैं एक खेल में कई उपयोगकर्ताओं के लिए।
  • वेबआरटीसी का उपयोग करना: प्रस्ताव और उत्तर सर्वर के माध्यम से websockets के साथ भेज दिया जाता है। फिर, ग्राहक 1 धक्का वर DataChannel के माध्यम से ग्राहक से 2 (मैं getUserData की जरूरत नहीं है)

मैं WebRTC का उपयोग कर पसंद करते हैं क्योंकि यह सर्वर का काम है, कि उसे और अधिक ग्राहकों को प्रबंधित करने की अनुमति आसान बनाता है। तो मैंने तुलना करने के लिए दो समाधान स्थापित किए और बड़े आश्चर्य! WebRTC की तुलना में Websockets बहुत तेज हैं!

मेरा परीक्षण सरल है: केवल तीन घन का उपयोग करके घुमावदार घन, पहला क्लाइंट प्रत्येक फ्रेम (60 प्रति सेकेंड) पर थोड़ा घूर्णन करता है और रोटेशन परिणाम क्लाइंट को 2 दबाता है। रिसेप्शन पर, क्लाइंट 2 रोटेशन अद्यतन करें और प्रस्तुत करें।

वेबसाइट्स के साथ, परिणाम सही है लेकिन वेबआरटीसी के साथ, क्लाइंट 2 वास्तव में धीमा चलता है, जैसे 5 एफपीएस।

क्या समस्या यह है कि मैं इसे कर रहा हूं? क्या यह सामान्य है ? मैं फ़ायरफ़ॉक्स पर लोकहोस्ट पर काम कर रहा हूं।

उत्तर

8

समस्या वेबआरटीसी के साथ है। क्रोम पर WebRTC DataChannel कार्यान्वयन (शायद फ़ायरफ़ॉक्स के लिए भी यही है) लगभग 30 केबीपीएस तक सीमित है। मुझे कारण क्यों नहीं पता? इंटरनेट बाढ़ नहीं होने के बारे में कुछ। इस सीमा को रोकने के लिए एक हैक है - इसे सेट करने से पहले एसडीपी में दायर "बी =" मैन्युअल रूप से बदलना।

हालांकि ... वेबआरटीसी पी 2 पी अनियंत्रित संचार है। इसका मतलब है कि आपको यह सुनिश्चित करने के लिए अतिरिक्त देखभाल करना है कि कोई संदेश गुम हो गया है और दोनों खिलाड़ी एक ही घटनाओं और पर्यावरण का निरीक्षण करते हैं। मैं websockets के साथ सिर्फ इसलिए जाऊंगा क्योंकि वे बहुत आसान, समझ और समर्थित हैं। यदि गेम वायरल चला जाता है तो मैं वेबआरटीसी को एक संभावित अनुकूलन के रूप में मानता हूं।

हालांकि यदि आप इस गेम को मजेदार बनाने के लिए कर रहे हैं तो आप वेबआरटीसी चुनने पर बहुत उपयोगी चीजें सीखेंगे।

आपको एक उदाहरण देखने के लिए कैसे WebRTC प्रयोग किया जाता है में वास्तविक परियोजनाओं पर एक नज़र डालें चाहते हैं: http://viblast.com/demo

एनबी! क्रोम 31-32 समय के आसपास एससीटीपी-आधारित डेटा चैनलों के परिचय के बाद अब कोई बैंडविड्थ थ्रॉटलिंग नहीं है और ऑपरेशन का एक नया तरीका है जो विश्वसनीय डेटा चैनलों की अनुमति देता है।

+1

क्रोम 31 से, एससीटीपी डिफ़ॉल्ट रूप से उपयोग किया जाता है, क्योंकि यह फ़ायरफ़ॉक्स में है, जो विश्वसनीय डेटा चैनलों को सक्षम बनाता है - हालांकि, वास्तव में, अविश्वसनीय परिवहन के साथ वास्तव में बहुत कम गिराए गए पैकेट हैं। साथ ही, जैसा कि मैं इसे समझता हूं, एससीटीपी का अर्थ है गतिशील भीड़ नियंत्रण, बैंडविड्थ पर एक निश्चित टोपी नहीं। –

+0

@ सैमडटन यह वास्तव में मुझे वेबआरटीसी के साथ एक और समस्या की याद दिलाता है: यह अभी भी अपने बचपन और एपीआई में है और व्यवहार में बदलाव असामान्य नहीं हैं। –

+0

वाह, धन्यवाद!असल में, यह वही है जो मैंने बिना किसी परिणाम के कई बार खोजा है। – Bambou

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