2013-06-24 10 views
7

जावा ईई 7 में एकाधिक वेब सॉकेट एंडपॉइंट्स या एकल वेब सॉकेट एंडपॉइंट आपको एनोटेशन के माध्यम से बहुत आसानी से नए एंडपॉइंट्स बनाने की अनुमति देता है। हालांकि, मैं सोच रहा था कि प्रत्येक संदेश प्रकार को एक अच्छा विचार संभालने के लिए एकाधिक अंतराल होते हैं या क्या मेरे पास सब कुछ के लिए सिर्फ एक एंडपॉइंट मुखौटा होना चाहिए?जो बेहतर है: जावा ईई 7

मैं इस सिद्धांत के आधार पर एक सिंगल एंड-पॉइंट मुखौटा रखने की ओर झुका रहा हूं कि प्रत्येक एंडपॉइंट क्लाइंट को नया सॉकेट कनेक्शन बनाता है। हालांकि, यह सिद्धांत गलत हो सकता है और वेब सॉकेट लागू किया जा सकता है ताकि यह केवल एक टीसीपी/आईपी सॉकेट कनेक्शन का उपयोग करे, इस पर ध्यान दिए बिना कि कितने वेब सॉकेट एंड पॉइंट कनेक्ट होते हैं, जब तक वे एक ही मेजबान से कनेक्ट होते हैं: पोर्ट।

मैं विशेष रूप से जावा ईई 7 के लिए पूछ रहा हूं, क्योंकि अन्य वेब सॉकेट सर्वर कार्यान्वयन हो सकते हैं जो चीजों को अलग-अलग कर सकते हैं।

उत्तर

4

यहां एकमात्र वैध उत्तर बाद वाला विकल्प है - जिसमें कई अंतराल हैं।

एपीआई प्रति सत्र MessageHandlers के पंजीकरण की सीमा देशी WebSocket संदेश प्रकार प्रति एक MessageHandler होने के लिए:

WebSocket spec chaper 2.1.3 देखें। [डब्ल्यूएससी 2.1.3-1] दूसरे शब्दों में, डेवलपर आने वाले टेक्स्ट संदेशों के लिए केवल एक मेस-ऋषि हैंडलर में प्रवेश कर सकता है, आने वाले बाइनरी संदेशों के लिए एक संदेश हैंडलर, और आने वाले पोंग संदेशों के लिए एक संदेश हैंडलर। यदि इस प्रतिबंध का उल्लंघन किया गया है तो वेबस्क्रिप्ट कार्यान्वयन में एक त्रुटि उत्पन्न होनी चाहिए [WSC 2.1.3-2]।

का उपयोग कर या नहीं कई TCP कनेक्शन का उपयोग कर के रूप में - AFAIK वर्तमान में वहाँ हर ग्राहक के लिए नए कनेक्शन हो जाएगा और वहाँ कोई आसान तरीका है कि आप कुछ और के लिए मजबूर कर सकते हैं। WebSocket multiplexing इसे हल करना चाहिए, लेकिन मुझे नहीं लगता कि कोई भी वेबसाकेट एपीआई कार्यान्वयन इसका समर्थन करता है (मैं गलत हो सकता हूं ..)

+0

यह वास्तव में प्रश्न संदेश प्रकार की अस्पष्टता के कारण ऊपर उठाए गए प्रश्न का उत्तर देता है। –

+0

क्षमा करें दोस्तों, मैं धीमी गति से हूं, इसलिए, यदि मैं एकाधिक अंतराल का उपयोग करता हूं, तो प्रति क्लाइंट या कनेक्शन प्रति एंडपॉइंट पर केवल एक कनेक्शन खुल जाएगा? – lbpeppers

+0

कनेक्शन प्रति एंडपॉइंट। मल्टीप्लेक्सिंग के लिए आरएफसी ड्राफ्ट था, लेकिन यह कभी खत्म नहीं हुआ था (https://tools.ietf.org/html/draft-ietf-hybi-websocket-multiplexing-11)। –

5

बस मेरे प्रश्न पर एक अस्पष्टता देखी गई: संदेश प्रकार। जब मैं संदेश प्रकार कहता हूं तो मेरा मतलब है कि विभिन्न प्रकार के एप्लिकेशन संदेश मूल संदेश प्रकार जैसे "बाइनरी" या "टेक्स्ट" नहीं हैं। जैसा कि मैंने स्वीकृत एक के रूप में @PavelBucek जवाब चिह्नित किया।

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

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

इसका मतलब यह होगा कि एप्लिकेशन को हमारे लिए ऐसा करने के लिए कुछ उच्च स्तरीय एपीआई पर भरोसा करने के बजाय प्रेषण करने की आवश्यकता है।

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