2013-01-12 22 views
7

खिलाड़ियों के बीच एक एंड्रॉइड मल्टीप्लेयर गेम के संचार के लिए मैं एंड्रॉइड ऐप में वेबसॉकेट समर्थन को सक्षम करने के लिए क्लाइंट साइड पर वेबस्केट सर्वर और TooTallNate's Java library का उपयोग कर रहा हूं। तो बस इसे स्पष्ट रूप से इंगित करने के लिए, मोबाइल ब्राउज़र में वेबसॉकेट समर्थन मेरे लिए महत्वपूर्ण नहीं है।मोबाइल उपकरणों पर वेबसॉकेट समर्थन

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

क्या आपके पास ऊपर दिए गए वेबसाकेट क्लाइंट लाइब्रेरीज़ का अनुभव है? मैंने अभी autobahn.ws for Android खोजा है - लेकिन मुझे नहीं पता कि यह मेरी वर्तमान लाइब्रेरी से स्विच करने योग्य है (ऊपर देखें)।

WAMP के बारे में क्या? क्या वेबसाकेट तकनीक बिल्कुल पर्याप्त समाधान नहीं है ताकि मुझे उप-प्रोटोकॉल (?) WAMP का उपयोग करना चाहिए?

उत्तर

4

हर नई तकनीक समस्याओं के एक नए सेट के साथ आता है। वेबसॉकेट के मामले में यह प्रॉक्सी सर्वर के साथ संगतता है जो अधिकांश कंपनी नेटवर्क में HTTP कनेक्शन मध्यस्थता करता है। WebSocket प्रोटोकॉल HTTP अपग्रेड सिस्टम (जिसे आमतौर पर HTTP/SSL के लिए प्रयोग किया जाता है) का उपयोग वेबसेट कनेक्शन से HTTP कनेक्शन को "अपग्रेड" करने के लिए करता है। कुछ प्रॉक्सी सर्वर इसे पसंद नहीं करते हैं और कनेक्शन छोड़ देंगे। इस प्रकार, भले ही कोई दिया गया क्लाइंट वेबसॉकेट प्रोटोकॉल का उपयोग करता हो, फिर भी कनेक्शन स्थापित करना संभव नहीं हो सकता है।

+0

धन्यवाद! क्या इसका मतलब यह है कि, क्लाइंट लाइब्रेरी का उपयोग किए जाने के बावजूद और मोबाइल डिवाइस (या वाहक), वेबसाकेट हमेशा प्रॉक्सी के कारण संदिग्ध रहेंगे? दूसरी तरफ, मोबाइल डेटा प्लान का उपयोग करते समय, आमतौर पर आपके बीच प्रॉक्सी नहीं होती है, है ना? पहले प्रश्न के लिए – caw

+0

। दूसरे प्रश्न के लिए हाँ । यह निर्भर करता है, आमतौर पर हमारे पास है। – atta

+0

भी, क्या आप क्लाइंट और सर्वर websockets कनेक्शन और मैसेजिंग के लिए अपना कोड साझा कर सकते हैं? – atta

8

कुछ मोबाइल नेटवर्क पर खराब वेब सॉकेट कनेक्शन के साथ ये वही त्रुटियां थीं। उनके द्वारा हल:

(1) चलती बंदरगाहों: एसएसएल बंदरगाह के लिए खत्म हो WebSocket के लिए सर्वर और ग्राहक से अधिक बढ़ते (पोर्ट 443)

(2) पिंग रखें जिंदा: ग्राहक से समय-समय पर "पिंग" संदेश भेज रहा है प्रत्येक एक्स सेकंड सर्वर पर, और सर्वर से वापस आने के लिए "पोंग" की प्रतीक्षा कर रहा है। यदि सर्वर वाई सेकंड के भीतर "पोंग" वापस नहीं देता है, तो क्लाइंट पर कनेक्शन पुनरारंभ करें।

कार्यान्वयन (1) आपको वहां से अधिकतर तरीके से प्राप्त करेगा।

+0

मुझे पता चला है कि पिंग बहुत महत्वपूर्ण है क्योंकि एंड्रॉइड और आईओएस के लिए वेबसाईट क्लाइंट्स की वर्तमान स्थिति (2016 तक) खराब कवरेज में निष्क्रिय कनेक्शन बूंदों को बहुत अच्छी तरह से या कुछ मामलों में वाईफ़ाई से भी संभाल नहीं पाती है। – Nick

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