2012-10-12 16 views
7

कल्पना कीजिए कि मैं एक वास्तविक समय मल्टीप्लेयर गेम बनाना चाहता हूं, जिसमें HTML5 (क्लाइंट) और node.js (सर्वर) है।वेबआरटीसी सही है? (रीयलटाइम मल्टीप्लेयर गेम)

मुझे सर्वर से सर्वर तक डेटा को तेज़ी से परिवहन करने की आवश्यकता है और इसके विपरीत।

मूल अनुप्रयोग में मैं UDP का उपयोग अधिकांश डेटा (प्लेयर स्थिति, ...) के लिए करता हूं, क्योंकि यह TCP से तेज़ तरीका है और यह खो जाने पर यह अनैतिक है।

HTML5 में मैं केवल (केवल) WebSockets का उपयोग कर सकता हूं। वेबसाकेट टीसीपी के शीर्ष पर है और इस प्रकार अच्छे प्रदर्शन के लिए पर्याप्त तेज़ नहीं है।

मैंने WebRTC के बारे में सुना, लेकिन मुझे नहीं पता कि यह इस समस्या का समाधान हो सकता है या नहीं।

क्या किसी के साथ इसका अनुभव है?

(मुझे पता है, जिसमें WebRTC अभी भी सबसे ब्राउज़र का समर्थन नहीं है, लेकिन यह मेरे लिए कोई फर्क नहीं पड़ता।)

+0

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

+0

टीसीपी: संदेशों की विश्वसनीय वितरण; सभी डेटा को स्वीकार किया जाता है सभी डेटा की डिलीवरी प्रबंधित की जाती है, और खोया डेटा स्वचालित रूप से पुनः प्रेषित किया जाता है। यूडीपी: स्वीकार्य बिना अविश्वसनीय, सर्वोत्तम प्रयास डिलीवरी तो इस उपयोग के मामले में टीसीपी बस गलत तकनीक है। – appsthatmatter

+1

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

उत्तर

2

WebRTC के संदर्भ में, की तरह लगता है कि तुम क्या जरूरत है DataChannel है: देखने draft protocol और HTML5 Rocks article (अस्वीकरण: मैंने इसे लिखा है!)

डेटाChannel प्रगति पर एक काम है, अभी तक किसी भी ब्राउज़र द्वारा लागू नहीं किया गया है।

अन्य वेबआरटीसी घटकों के लिए, मीडियास्ट्रीम (getUserMedia) क्रोम, फ़ायरफ़ॉक्स नाइटली और ओपेरा द्वारा समर्थित है; RTCPeerConnection एक ध्वज के पीछे क्रोम स्थिर है (आगामी संस्करणों में ध्वज रहित), और क्यू 1 2013 में फ़ायरफ़ॉक्स 18 के लिए वादा किया गया।

संपादित करें: आरटीसीडीएटा चैनेल अब फ़ायरफ़ॉक्स और क्रोम पर लागू किया गया है।

क्रोम 'एकल पृष्ठ' डेमो: simpl.info/dc, Firefox demo

+0

नवीनतम घोषणाओं के बारे में, मुझे लगता है कि मीडियास्ट्रीम और पीयरकनेक्शन तेजी से आगे बढ़ रहे हैं। DataChannel कैसे जा रहा है? इसके अलावा आपका एटिकल ब्राउज़र-टू-ब्राउजर संचार के लिए डेटा चैनल का उल्लेख करता है। यह ब्राउजर-टू-सर्वर के साथ-साथ काम करता है, है ना? – Cystack

+1

इसे इंगित करने के लिए धन्यवाद - इसे थोड़ी देर के लिए नहीं देखा है: जोड़ा गया संपादित करें। सर्वर पर, आप वेबआरटीसी सी ++ एपीआई का उपयोग कर सकते हैं। –

1

RTCDataChannel सत्र-आधारित/भरोसेमंद के साथ-साथ कनेक्शन रहित/अविश्वसनीय परिवहन प्रदान करता है, जो क्रमशः मूल ग्राहक में टीसीपी और यूडीपी के समान होता है। अधिक जानकारी here। 2013 तक, यह एक व्यवहार्य तकनीक है, यद्यपि बाद में क्रोम और फ़ायरफ़ॉक्स में ही बनाता है।

According to html5rocks.com, अब स्थानांतरण के लिए बाइनरी प्रकारों का उपयोग करना भी संभव है। तो आपके पास एक कुशल, देशी यूडीपी ग्राहक के साथ आपकी सभी क्षमताओं होनी चाहिए। हालांकि, मुझे अभी तक अनिश्चितता है कि बाइनरी ट्रांसफर ने वीब्रेट रेपॉजिटरी, where it has been fixed, क्रोम में सभी तरह से, या यह अभी भी केवल इस चरण में क्रोम कैनरी में उपलब्ध है या नहीं।

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